System and Method for Remote Data Acquisition and Distribution

ABSTRACT

Methods and systems for remote data collection and distribution include components and operations for receiving, at a server, data transmitted by a first client device via a communication network. The method may also include selecting, by one or more client devices associated with the communication network, a second device to receive the data. The method may further include establishing a connection between the server and the selected second device via the communication network. The method may also include automatically transmitting the received data to the second device using the connection via the communication network. The method may further include causing, by the one or more client devices, the second device to execute a predefined operation.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.12/489,385, filed on 22 Jul. 2009. U.S. patent application Ser. No.12/489,385 is a continuation of U.S. patent application Ser. No.11/653,305, filed on 16 Jan. 2007 and entitled SYSTEM AND METHOD FORREMOTE DATA ACQUISITION AND DISTRIBUTION, which claims priority to andthe benefit of the filing date of U.S. Provisional Patent ApplicationNo. 60/758,983 filed 17 Jan. 2006, both of which are hereby incorporatedby reference herein in their entirety.

INTRODUCTION

This application relates generally to data collection systems and, moreparticularly to a system and method for remote data acquisition anddistribution using fixed or mobile computing platforms.

There are various technologies available in the marketplace for anorganization to communicate in real-time with its personnel deployed inthe field.

At the most basic level, the organization can maintain direct verbalcommunication using one or more kinds of mobile communication devices,such as cellular phones, two-way radios or other handheld devices. Withthe necessary wireless data connection, some of those devices can alsotransmit and receive various data through instant messaging, textmessaging, mobile email, multimedia messaging and comparable serviceofferings. Using multimedia messaging, for instance, the organizationand its deployed personnel can share messages with each other thatinclude previously stored data files, such as text, photos, animatedgraphics, voice messages, and pre-recorded video clips.

The ability to communicate effectively becomes more challenging as thesituation in the field becomes more fluid. An incident may haveoccurred, be in the process of occurring or be at risk of occurring. Themore urgent and/or geographically dispersed the incident, the harder itcan be for the organization to remotely monitor the situation andprovide effective guidance to deployed personnel. Hurricane Katrinaprovides but one recent example of the communication challenges that canarise. At least in the initial stages of an incident, an organizationmay be relying on two-way verbal communications with fast-movingpersonnel on the ground. If the organization wants live visual imageryto help monitor and analyze the situation, it has several potentialmeans to obtain it.

The organization can seek any available satellite imagery or aerialphotography of the incident location. These technologies can producehigh-resolution images which are increasingly available from public andprivate sources. For example, the National Oceanic and AtmosphericAdministration made available on its Website images of the Gulf coastfollowing Hurricane Katrina (http://ngs.woc.noaa.gov/Katrina/). From theorganization's perspective, the problem with these technologies is thelag that occurs from the time an incident has first occurred, to thetime the satellite or aerial vehicle is physically in a position tocapture the imagery (if at all), to the time it takes to process thecaptured imagery and make it available for viewing. This time lag can bemeasured in hours, days or longer, depending on various factors.

If the organization has its own video surveillance network in place inthe area of interest, it can check whether any of its networked camerasare capturing the requisite imagery. That technology has been evolvingover the years. The traditional closed-circuit TV setup involves analogcameras mounted at fixed positions and connected to a central commandcenter via a dedicated cable connection. The cameras capture andtransmit complete image frames, which are viewed on a television monitorand archived using a video recording device. If a particular camera haspan-tilt-zoom (PTZ) controls, the command center may also be able toremotely access those controls for enhanced viewing angles.

A recent trend has been the creation of IP-based surveillance networksof fixed cameras connected via wired and/or wireless networks. Suchfixed IP cameras capture raw image frames that are compressed prior totransmission using a commercially available compression standard.(Equipment on the network can also convert analog camera frames todigital ones using various commercially available technologies.) Two ofthe most common compression standards are the Motion JPEG (or M-JPEG)standard and the MPEG standard.

The motion JPEG standard, or Motion Joint Photographic Experts Groupstandard, compresses each raw image on an intra-frame or frame-by-framebasis. The MPEG standard, or Moving Pictures Expert Group standard,compresses the raw images on an intra-frame and inter-frame basis. Oncecompressed, the imagery is capable of being viewed, analyzed and storedin multiple ways. By way of example, the imagery can be viewed oncomputer monitors, certain mobile devices, and other equipment, and canbe archived on digital video recorders, personal computers, and othermass storage solutions.

An IP-based network can provide other benefits as well. Many fixed IPcameras (and converted analog cameras) have a Web server applicationembedded in them. Each Web server has a unique URL, or Uniform ResourceLocator, which may allow a fixed camera's live image stream to be viewedremotely through any Web browser or other Web-enabled application. TheWeb browser communicates directly with the fixed camera's dedicated Webserver using a common Web protocol such as HTTP (Hypertext TransferProtocol) or RTP (Real Time Protocol). Various vendors make availablesoftware applications that allow a mobile communication device toremotely view a fixed camera's live image stream through the embeddedWeb browser on the mobile device. Some of those applications also allowthe mobile communication device to remotely control a fixed camera'savailable PTZ movements.

Further, a fixed camera's geospatial coordinates, if available, can bemapped to a Geographic Information System (GIS) or other viewingapplication for enhanced visualization by an organization. The GoogleEarth™ viewing application is one increasingly popular example of thistype of service offering. Depending on each service offering'sparticular format, a camera's physical location can be depicted as anicon on a map, and the camera's URL can be shown as a hyperlink. Byclicking on the hyperlink, the camera's live image stream can be viewedon the screen using a Web browser connected to the camera's server.

One problem with any analog or IP-based surveillance network is theinherent geographical limits of its fixed network cameras. A videocamera has a limited viewing area/range. If an incident is occurring 50miles from the nearest fixed camera, the organization and its mobilepersonnel will not be able to view the event. If an organization has theavailable resources, it can seek to put in place near the incident atemporary surveillance network using cameras that transmit over awireless network. This type of network is often set up using a Wi-Fi®wireless local area network or in some cases using an availablecommercial cellular network or a satellite connection.

Even if an organization deploys a temporary mobile network, there areinherent limitations. There will inevitably be an initial time delay insetting up the network, and the network will still not be effectivebeyond the range of its cameras. There will also be an additional lageach time the network is redeployed to a new location in an effort tokeep up with a geographically dispersed incident.

An organization can also seek to obtain visual images and other datafrom its deployed personnel or other sources near the incident. Thereare various data distribution technologies available to do so.

There are commercially available videophones and other videoconferencing technologies that allow for simultaneous, peer-to-peervideo and audio data transmissions, but only among connected usersoperating compatible viewing hardware.

A person with a digital camera, camcorder, webcam or comparable devicecan capture live images, transmit them via a wired (or in some caseswireless) connection to a personal computer or a laptop and save them asdata files. Those data files can then be transferred through anemail-type transfer via a wired or wireless connection. If the personhas a media server installed on the personal computer or laptop, thedata files can be made available for remote viewing on the media server.Alternatively, the data files can be transferred to a central serverthat is accessible via a communication network, such as the Internet.That stored data is then available for remote downloading by otherregistered users using a compatible video player.

If the person has a mobile communication device with an embedded camera,such as a camera-equipped cell phone, that person may be able to capturea still image or a short video clip on the device, save it as a datafile and transfer it through an email-type transfer via a wired orwireless connection to one or more cellular numbers or email addresses.The individual can also transmit an accompanying text message or voicerecording. Alternatively, there are applications available that allowthe mobile communication device to stream live video and/or audio datadirectly to a central server for remote viewing as well.

In some cases, the ability to “webcast”, “podcast” or use similartechnologies allows certain data files to be made available for remoteviewing by other users or automatically delivered to another user'scomputer at prescribed intervals or based on the occurrence of someevent.

The preceding data distribution technologies may also allow certaincaptured data files to be tagged with their corresponding geospatialcoordinates for subsequent viewing on a GIS service. Through variousavailable means, the coordinates can be added to a digital image'sexchangeable image file format (EXIF)—an industry standard—allowing theimage to be displayed as an overlap on a digital map. Some servicesallow a digital image of any age to be manually dragged to itsoriginating location on a digital map to create the linkage. Google'sPicasa™ photo organizer, for instance, offers a tagging service inconjunction with Google Earth™. The tagging can occur through multipleother means as well. The tagging can occur on the device itself, forexample, if the device has the necessary Global Positioning System (GPS)chipset or if the device may be communicatively coupled to a separateGPS receiver. The tagging can also be accomplished through the use ofdigital mapping software applications and other means in which thetimestamp of a digital image is matched to the timestamp of thegeospatial coordinates captured by the separate GPS receiver.

One disadvantage with data distribution technologies, such as thosedescribed above, is that the data flows can be relatively slow andinefficient, particularly during an emergency. With e-mail-typetransfers, it can take time to set up the e-mail message, add one ormore addressees, add the attachments, and type any accompanying text.With a media server, a remote viewer must know the IP address of themedia server, must know the file is available for viewing, and must haveaccess to a compatible media player to view it. Further, the connectionmight not even be available if the media server is running on hardwarethat is using a wireless data connection due to the manner in which thecommercial cellular networks assign changing IP addresses.

Uploading or streaming data files directly to a central server allowsfor simultaneous viewing by any number of associated users, but that, byitself, is not conducive to real-time interaction among the organizationand its dispersed personnel. The data flow is still passive, as datafiles are typically deposited in a single location for remote viewing byassociated users, who may be required to search, identify, download, andexecute applications for displaying or processing the data files. Forexample, if employee A is streaming live video directly to the server,employees B and C may be required to affirmatively establish independentconnections to that server to view the live feed (or the archived feedif employee A has ceased transmitting video at the point employees B andC establish their server connection).

One potential challenge arises when Employee A is streaming live videoand wants one or more devices in a heterogeneous network with entirelyseparately geographical locations (some with fixed computing platformsand some with handhelds and other mobile computing devices) toimmediately and automatically display the same live video stream.Another challenge may arise when employee A is watching a live feed fromanother source (such as a fixed camera) and wants one or more devices todisplay the live feed. In another example, employee B may be watching alive feed being sent simultaneously (i.e., in real-time) by employee A,and employee B wants to cause the devices associated with employees Cand D to display that same live feed as well, without requiring actionby employees C and D. In yet another example, an organization (orassociated user of an organization's network) may create a new data fileor obtain an existing data file—such as a still photo, a map or otherdata file—and may wish to share the file immediately with other users,without requiring any prior notification to them or any independentaction by them. Thus, a dynamic command and control communication systemmay be required that allows an organization and its employees to acquireand distribute live video, audio, and data streams in real-time andprovide a platform for causing one or more devices on the organization'snetwork to automatically display, stream, or process the data, withoutspecific interaction from a user of the device.

Thus, a need exists for a mobile command and control system that canovercome the problems associated with the real time capture anddistribution of data files using fixed or mobile computing platforms.

BRIEF DESCRIPTION OF THE DRAWINGS

The novel features and advantages of embodiments consistent with thepresent disclosure will best be understood by reference to the detaileddescription of the embodiments which follows, when read in conjunctionwith the accompanying drawings, in which:

FIG. 1 is a block diagram of the mobile command and control systemaccording to an exemplary disclosed embodiment;

FIGS. 2A-2B are schematic block diagrams of an exemplary mobile clientdevice that may be used in the system shown in FIG. 1;

FIG. 2C is an schematic block diagrams of an exemplary desktop clientdevice that may be used in the system shown in FIG. 1;

FIG. 3A-3C are schematic block diagrams of an exemplary command centerserver that may be used in the system shown in FIG. 1;

FIG. 4 is a schematic block diagram of exemplary command center computerhardware that may be used in the system shown in FIG. 1;

FIGS. 5A-5D illustrate an exemplary configuration process running on anexemplary client device that may be used in the system shown in FIG. 1;

FIG. 6 provides a block diagram illustrating operation of an exemplarytransmit function running on an exemplary client device that may be usedin the system shown in FIG. 1;

FIG. 7 provides a block diagram illustrating an exemplary watch functionrunning on an exemplary client device that may be used in the systemshown in FIG. 1;

FIGS. 8A-8B illustrate a flow diagram summarizing an exemplary method bywhich messages, commands and other data are routed within the systemshown in FIG. 1;

FIG. 9 illustrates an exemplary method for viewing and distributing liveimage streams in the system shown in FIG. 1;

FIGS. 10A-10B illustrate exemplary methods for viewing and distributingarchived image streams in the system shown in FIG. 1;

FIG. 11 includes a screenshot of an exemplary location image overlaidwith an exemplary streaming video pane, according to an exemplary methodfor viewing streaming data according to the disclosed embodiments; and

FIG. 12 includes a screenshot of an exemplary streaming video pane withan exemplary map window attached to it showing its originating location,according to an exemplary method for viewing streaming data according tothe disclosed embodiments.

DETAILED DESCRIPTION

Various features of the exemplary embodiments will now be described withreference to the drawing figures, in which like parts are identifiedwith the same reference characters where convenient. The followingdescription of embodiments consistent with the invention is not to betaken in a limiting sense, but is provided merely for the purpose ofdescribing the general principles of the invention.

Overview

Embodiments of systems and methods consistent with the presentdisclosure relate to a mobile command and control system that maycomprise mobile client software that may be installed on one or morecustomized and/or commercially available handheld devices or othermobile communication devices. The mobile client software may allow usersto collect and transmit live video streams, live audio streams, stillimages, location data, etc., to a central server via a communicationnetwork. The software may allow certain devices designated by a networkadministrator to remotely access and command one or more client devices,thereby allowing the designated devices to remotely control certainoperational aspects associated with the client devices. For example,according to one embodiment, one or more client devices may bedesignated to, among other things, cause one or more other devices todisplay a particular video stream or image file. Alternatively and/oradditionally, one or more client devices may be designated to activate acamera, microphone, location sensing technology, data sensor, or otherinput device to begin collecting data and streaming the collected datato one or more client devices and/or a central server.

Embodiments of a mobile command and control system consistent with theinvention may further comprise desktop client software that may beinstalled on one or more personal computers, laptops and other fixed ormobile computing platforms and that functions substantially in the samemanner as the mobile client software, allowing for variations in theunderlying functionality of the computing platform on which the desktopclient software is installed. For example, unlike many mobilecommunication devices, the desktop client hardware may not have abuilt-in video camera, but may nonetheless be communicatively coupled toan external video camera to allow for the transfer of streaming video tothe central server. Both the mobile client software and the desktopclient software may be communicatively coupled to one or more datacollection devices, such as GPS receivers, audio recorders, sensors orany other suitable data collection device.

Embodiments of a mobile command and control system consistent with theinvention may further comprise server software that may be installed onserver hardware and that receives and processes the incoming andoutgoing data traffic to, from and among the mobile client devices andthe desktop client devices, among other things. The server software andthe server hardware on which it is installed may be referred togenerally as a command center server. As described further below, anorganization can maintain one or more command center servers dependingon its specific requirements, each of which may serve a differentfunction in the system.

Embodiments of a mobile command and control system consistent with thepresent disclosure may further comprise a desktop application that runson one or more personal computers, laptops and other fixed or mobilecomputing platforms and that allows its operator to exercise command andcontrol functionality, including the ability to access the datamaintained on the command center servers, to view incoming and storeddata files in multiple viewing formats, and to transmit messages,commands and other data files to mobile client devices and desktopclient devices, near or in real-time, among other things.

I. System Architecture

A. Network

FIG. 1 is a block diagram of an exemplary disclosed mobile command andcontrol system (system) 100 consistent with one or more disclosedembodiments. In the embodiment shown, the system 100 may comprise mobileclient software 1 that runs on a plurality of mobile communicationdevices (mobile client devices) 2 a, 2 b. The mobile client devices 2 a,2 b communicate with other components of the system 100 via a wirelessnetwork 4. The wireless network can be any type of wireless network, orcan be a combination of more than one wireless network. For example, thesystem 100 can work with any current commercial cellular network(including GSM/GPRS and CDMA/1xRTT) and any faster next-generation dataservices that might be available such as 3G services (including EDGE,UMTS, HSDPA, EVDO and WCDMA). Other types of wireless networks 4 thatcan be used in the system 100 according to an exemplary disclosedembodiment may include any wireless local area network (such as a Wi-Fi®network), and any private cellular network, such as a picocell-type basestation configuration. A private cellular network can be especiallyuseful in circumstances when the commercial cellular networks aretemporarily unavailable, as can occur, for example, in an emergencysituation. Still further, the wireless network 4 could be a satellitebased wireless system.

In the embodiment shown, the system 100 may further comprise desktopclient software 3 that runs on a plurality of desktop personalcomputers, laptops and other fixed or mobile computer platforms (desktopclient devices) 5 a, 5 b. Desktop client device 5 may communicate withother components of the system 100 via a wireless network 4 or a wirednetwork 8 or a combination of the two. The desktop client software 3functions in substantially the same manner as the mobile client software1, allowing for variations in the underlying functionality of thecomputing platform on which the desktop client software is installed.For ease of reference, and unless the context specifically requiresotherwise below, the mobile client software 1 and the desktop clientsoftware 3 are referred to collectively as the client software and themobile client devices 2 and the desktop client devices 5 are referred tocollectively as the client devices.

In the embodiment shown, the system 100 may further comprise any or allof an organization's fixed and/or mobile networked cameras 6 a, 6 b, 6 cand 6 d and other available fixed or mobile cameras through the networks4, 8 (e.g., fixed cameras 6) that the organization wishes to incorporateinto the system 100. A fixed camera 6 may communicate via the wirelessnetwork 4, or can be connected to a wired network 8. The wirelessnetwork 4 is connected via a communication path 10 to the wired network8. The wired network 8 can, and often will, comprise a plurality ofwired networks that interface to provide access to/from the clientdevices. For example, a first wired network 8 can be the Internet, whichis then connected to a local area network and/or wide area network, oran organization's other type of wired network. Collectively, these arereferred to as the wired network 8. Similarly, wireless network 4 maycomprise a plurality of wireless networks, such as interconnectedwireless networks of various wireless service providers (e.g., VerizonWireless, Sprint, Cingular, T-Mobile etc.).

The system 100 may further comprise one or more command center servers12 a, 12 b. Each command center server 12 may be comprised of one ormore types of server software 14 that is installed on one or more typesof server hardware 16. The command center servers 12 a, 12 b maytransmit data to, and receive data from, any client device via wirelessnetwork 4 (for example, where the server hardware 16 comprises a laptopor other mobile computing platform that is capable of connecting withwireless network 4 or via wired network 8 or a combination of the two.As described further below, an organization can maintain one or morecommand center servers 12 depending on its specific requirements, eachof which may serve a different function in the system 100.

For example, as described further below, the system 100 may include:

-   -   One or more core command center servers 12 communicatively        coupled with each other and serving as the primary hub for the        acquisition and distribution of data files within the system        100.    -   One or more intervening command center servers 12 that act as a        data gateway in the system 100 to translate between different        data transport mediums. For example, if employee A has an email        attachment that he or she wishes to circulate immediately within        the system 100, the email may be sent directly to the data        gateway address, and the email attachment may be translated into        a format suitable for redistribution to one or more client        devices through the messaging and routing function described        further below.    -   One or more intervening command center servers 12 that act as a        proxy server in the system 100 for, among other things,        facilitating multiple simultaneous requests by client devices to        access one or more fixed cameras 6 that may otherwise be limited        in the number of direct simultaneous connections they will        support.

As shown, the system 100 may further comprise a desktop application 20that is installed on one or more personal computers, laptops, or otherfixed or mobile computing platforms (command center PCs) 22 a, 22 b.Command center PC 22 communicates with command center server 12 and canbe connected via wired network 8 or wireless network 4 or a combinationof the two. Any person who operates command center PC 22 is referred togenerally as a command center operator. In another embodiment, thefunctions of a command center PC 22 and a command center server 12 maybe combined in a single computer system. For example, a single computingplatform may have installed on it both server software 14 and thedesktop application 20. In another embodiment, a variation of thedesktop application 20 may be installed separately on a mobile clientdevice 2 or a desktop client device 5.

B. Mobile Client Devices

FIG. 2A is a schematic block diagram of an exemplary mobile clientdevice 2 that may be used in the system shown in FIG. 1. The mobileclient device 2 can be any mobile device—such as, for example, a Palm™Treo® smartphone or a Windows®-based Pocket PC or Smartphone device—thatis capable of capturing and transmitting video image data and connectingto a wireless network 4. The mobile client device 2 may comprise aninput/output bus 30, a central processing unit (CPU) 31, a camera 32, adisplay screen 33, a speaker 34, a microphone 35, an operating system36, a memory slot 37, an input/output port 38, memory 39, and/or auser-input interface (keyboard) 40. Mobile client device 2 may includeadditional, fewer, and/or different components than those listed above.

The mobile client device 2 shown further comprises radio frequency (RF)transmitting/receiving circuitry for wireless communication, such as RFcircuitry 42. As one of ordinary skill in the art can appreciate,various types of RF technologies may be used, and mobile client device 2may include separate RF circuitry 42 to support one or more of them. Forexample, mobile client device 2 may comprise RF circuitry 42 to supporta cellular wireless standard and RF circuitry 42 to support theBluetooth® short-range wireless connectivity standard, the details ofwhich are known in the art and omitted in the interest of brevity.

In addition, mobile client device 2 may be capable of supportingadditional RF technologies through a communicative coupling with otherhardware that has RF circuitry embedded in it, such as RF externaladapter 44. For example, there are commercially available RF externaladapters 44 available to support the Wi-Fi® wireless standard. This typeof RF external adapter 44 may attach to the mobile client device 2 indifferent ways, such as through memory slot 37 or input/output port 38or through a Bluetooth® wireless connection if both the mobile device 2and the RF external adapter 44 support that standard.

As shown, mobile client device 2 can have an internal GPS receiver 45 ormay be communicatively coupled to an external GPS receiver 47, such asthrough the memory slot 37, the input/output port 38, or through aBluetooth® wireless connection if both the mobile device 2 and theexternal GPS receiver 47 support that standard. In either case, the GPSreceiver may be used to triangulate longitude, latitude, and otherlocation data by receiving radio wave signals from GPS satellites.Alternatively, a location may be determined by a cellular signalbroadcast from the mobile device to triangulate the position of themobile client device using available cellular emergency locationtechnology (e.g., federal E911 program, etc.). The use of location datais discussed in greater detail below.

As shown, mobile client device 2 memory 39 may contain the device'soperating system 36, which interacts with mobile client software 1. Themobile client software 1 may comprise any number of components dependingon the nature of the data being transmitted within the system 100. Forexample, the mobile client software 1 may comprise eight separate majorfunctions, each of which is shown on the exemplary schematic blockdiagram of the mobile client software 1 appearing on FIG. 2B and each ofwhich may have any number of subfunctions associated with it. As shownin FIG. 2B:

-   -   A configuration function 55 may allow a user to configure the        mobile client device 2, or allow the command center server 12 to        cause the mobile client device 1 to be configured, in different        ways for the purpose of communicating data within the system        100.    -   A history function 56 may allow a user to repeat on the mobile        client device 2 prior instances in which the mobile client        device 2 received a message, command or other data from a        command center PC 22 or another client device.    -   A panic function 57 may allow a user to initiate a panic        sequence on the mobile client device 2 and send an immediate        alert (silent or audible) to the command center server 12 for        immediate assistance.    -   A transmit function 58 may allow a user to capture and transmit        live imagery from the mobile client device 2 to a command center        server 12 using various video compression technologies. As        described further below, in one embodiment, the live imagery may        be compressed and transmitted on a frame-by-frame basis using a        JPEG format that has been integrated into the transmit function        58. In another embodiment, live audio may be transmitted with,        or instead of, the imagery. In yet another embodiment, location        information and other applicable data, such as sensor data (e.g.        temperature, radiation levels, etc.) may also be transmitted,        with or without live video and/or audio data.    -   A watch function 59 may allow a user to remotely search for and        view live imagery being streamed by a fixed camera 6, by another        mobile client device 2, by a desktop client device 5 or by other        available sources.    -   An archive function 60 may allow a user to remotely search for        and view archived imagery previously captured by the system 100.    -   An upload function 61 may allow the user to upload data files        from the mobile client device 2 for storage at the command        center server 12 and for immediate or subsequent distribution        within and outside the system 100. The uploaded data file may        originate from numerous sources, such as the mobile client        device 2 itself, or from another data collection source that is        communicatively coupled to the mobile client device 2, or from        an uncoupled source, such as a separate digital photo or other        data file stored on a compact flash, SD card or other suitable        media.    -   A command function 62 may allow the user to exercise various        command and control functionality from the mobile client device        2 to cause data files to be created and communicated within the        system 100.

As shown on the preceding FIG. 2A, the mobile client device 2 operatingsystem 36 may also contain a virtual private network (VPN) and/or otherencryption technology 41 to encrypt the incoming and outgoing datatraffic between the mobile client device 2 and an organization's datanetwork. An organization may install on the mobile client device 2 itsown preferred encryption technology, such as a commercially availableFederal Information Processing Standard (FIPS) 140-2 compliantencryption technology.

It is contemplated that operating system 36 associated with mobileclient device 2 may contain additional and/or different programs thanthose listed above, such as one or more software applications 67. It isfurther contemplated that components and/or software described inassociation with operating system 36 are exemplary only, and notintended to be limiting.

C. Desktop Client Devices

FIG. 2C is a schematic block diagram of an exemplary disclosed desktopclient device 5 that is running the desktop client application 20consistent with one exemplary embodiment. Command center PC 22 mayinclude any desktop personal computer, laptop or other fixed or mobilecomputer platform that is capable of running an operating system 173,such as, for example, the Windows 2000® operating system or a laterversion. Each command center PC 22 may also include, among othercomponents, a hard drive 170, memory 171 and a keyboard 172. Desktopclient software 3 may run on the operating system 173. Desktop clientdevice 5 may include additional, fewer, and/or different components thanthose listed above.

As noted earlier, the desktop client software 3 may function insubstantially the same manner as the mobile client software 1. Forexample, as with a mobile client device 2, a desktop client device 5 canhave an internal GPS receiver 45 or may be communicatively coupled to anexternal GPS receiver 47, such as through a USB serial connection orthrough a Bluetooth® wireless connection. Further, the desktop clientdevice 5 may also comprise any number of components depending on thenature of the data being transmitted within the system 100, and may, atminimum, comprise the software applications previously shown on theexemplary schematic block diagram of the mobile client software 1appearing on FIG. 2B.

As with a mobile client device 2, it is contemplated that operatingsystem 173 associated with a desktop client device 5 may containadditional and/or different programs than those listed above, such asone or more software applications. It is further contemplated thatcomponents and/or software described in association with operatingsystem 173 are exemplary only, and not intended to be limiting.

D. Command Center Server

FIG. 3A is a schematic block diagram illustrating components that may beassociated with command center server 12, according to an exemplaryembodiment. Among other components, command center server 12 may includeserver hardware 16 on which runs a server operating system 70 and theserver software 14. In one embodiment, the server hardware 16 can be anyserver hardware that supports an operating system, such as a Microsoft®operating system. According to one embodiment the server operatingsystem 70 may include the Windows XP® operating system or other suitableoperating system. The server software 14 may also include a Web server72 and a database application 74, each of which is described furtherbelow. Command center server 12 may include additional, fewer, and/ordifferent components than those listed above.

In one embodiment, the Web server 72 may include the Microsoft® InternetInformation Services Web Server® and the database application 74 mayinclude the Microsoft® SQL Server. However, it is contemplated thatadditional and/or different applications may be included with serveroperating system 70, Web server 72 and/or database application 74,respectively. It is further contemplated that components and/or softwaredescribed in association with operating system 70 are exemplary only,and not intended to be limiting.

1. The Server Software

FIG. 3B is a schematic block diagram illustrating components that may beassociated with server software 14, according to an exemplaryembodiment:

-   -   An image service 80 may receive and process the live imagery        (e.g., streaming video data) transmitted from a mobile client        device 2, a desktop client device 5 or other sources.    -   Various databases may be included in a database application 74        for storing the processed imagery and other data files        introduced into the system 100.    -   A messaging and routing service 81 may be managed by the Web        server 72 to communicate messages, commands and other data to,        from and among the client devices and other applicable sources.    -   A cataloging service 82 may be managed by the Web server 72 to        maintain and communicate information about each fixed camera 6.        Each of these components may include one or more subcomponents,        as illustrated by the schematic block diagram shown in the FIG.        3C. By way of overview, exemplary server software 14 primary        components and subcomponents are described briefly below and in        greater detail further below.

(a) The Image Service

As noted earlier, live imagery may be transmitted by a mobile clientdevice 2, a desktop client device 5 or other sources (such as a fixedcamera 6) to the command center server 12 in any compatible format, suchas the JPEG format. In a preferred embodiment, a command center server12 may also include the capability to transcode an incompatible formatinto a compatible format for incorporation within the system 100.According to one embodiment, imagery may be transmitted on aframe-by-frame basis, for example, as streaming video data. The imageservice 80 may receive and process each image frame. As shown in FIG.3C, the image service 80 may include one or more subcomponents, such asa reception service 85, a time-encoding service 86, an image buffer 87,a geocoding service 88, an archiving service 89 and a data service 90.

(i) The Reception Service

An exemplary reception service 85 may receive each incoming image frameand transcode it into any image file format, such as the ExchangeableImage File Format (EXIF). Image format files including the applicablefile format are well known to those of ordinary skill in the art, andare not described further in the interest of brevity. The receptionservice 85 may be configured to handle multiple simultaneous incomingconnections.

(ii) The Time-Encoding Service

In one embodiment, each image frame may then be routed to thetime-encoding service 86, which writes date and time informationassociated with each frame to the image file format.

(iii) The Image Buffer

Each image frame may then be routed to, and stored in, an exemplaryimage buffer 87. The image buffer 87 may be configured to store one ormore image frames. As the image buffer 87 fills up, each image frame maybe routed on a first-in, first-out basis to an exemplary geocodingservice 88. The image buffering process is also well known to those ofordinary skill in the art, and is not described further in the interestof brevity.

Image frames stored in the image buffer 87 may be retrieved for liveviewing by command center PC 22, by any mobile client device 2, by anydesktop client device 5 or by other sources. These images may betransferred automatically, periodically, and/or in response to a requestfrom the applicable viewing source. For example, the desktop application20 (in the case of command center PC 22) or the watch function 59 (inthe case of a client device) may retrieve image frames stored in theimage buffer 87. In any case, the requested image frames may beformatted and transmitted by the image buffer 87 as an M-JPEG videostream or any other suitable format. In addition, the image frames mayalso be viewed by various other sources, such as by a third-partyapplication capable of receiving a formatted video stream, or by adigital video recorder or network video recorder, or by a Web browser orthird-party media player (such as the Windows® Media Player) capable ofviewing formatted video streams. The image buffer 87 may be configuredto handle multiple simultaneous outgoing connections.

(iv) The Geocoding Service

Once the geocoding service 88 receives the time-encoded image frame fromthe image buffer 87, it may retrieve from the last known table 96 in thedatabase application 74 the last known location data for the applicableclient device or other source that originated the image frame. Asdescribed in greater detail below, the available location data may havebeen received in different ways by the command center server 12 and mayaccordingly be processed by the geocoding service 88 in different ways.

In one embodiment, the geocoding service 88 may first determine whetherthe date and time of the image match the date and time of the availablelocation data (or, alternatively, if the respective dates and times arewithin a designated time interval of each other), and, if so, thegeocoding service 88 may reformat the image frame, incorporate thatlocation data into the applicable image file format, and route the imageframe to the frames database 97 in the database application 74 forarchiving and subsequent retrieval. If, however, the available locationdata falls outside the designated time interval, the image frame mayinstead be routed to the frames database 97 without further action,thereby potentially reducing the risk that dated location data mayinadvertently be incorporated into the wrong image frame.

Alternatively, the client device may have transmitted the image framesand the corresponding location data together to the command centerserver 12 (using different potential methods, as described furtherbelow), in which case the geocoding service 88 may route those images tothe frames database 97 without further action.

(v) The Archiving Service

As shown in FIG. 3C, an exemplary archiving service 89 may process oneor more requests to view archived image frames by retrieving them fromthe frames database 97 and reformatting them as an M-JPEG video streamor other suitable format. As with live video frames in the image buffer87, the archived image frames may also be viewed by a command center PC22, a client device or by various other sources, such as by athird-party application capable of receiving a formatted video stream,or by a digital video recorder or network video recorder, or by a Webbrowser or third-party media player (such as the Windows® Media Player)capable of viewing formatted video streams. The archiving service 89 maybe configured to handle multiple simultaneous outgoing connections.

(vi) The Data Service

An exemplary data service 90 may process one or more requests to viewarchived image frames in their original format, together with anyassociated information contained in the frames database 97 for thosearchived image frames.

(b) The Database Application

Database application 74 may maintain any number of databases to storeapplicable data. For example, the types of databases that can be used inthe system 100 may include:

-   -   An exemplary position log 95 may, for example, maintain a        continuous history for each client device of each instance in        which it reported its location data and of each instance in        which the client device engaged the panic function 57, the        transmit function 58, the watch function 59 or any other        functionality available on the applicable mobile client software        1 or desktop client software 3.    -   An exemplary last known table 96 may include the most recent        entry from the position log 95 for each client device.    -   An exemplary message queue 98 may temporarily store one or more        messages, commands and other data communications from command        center PC 22 to a client device or among client devices.    -   An exemplary frames database 97, as noted earlier, may receive        image frames from the geocoding service 88 and archive them for        subsequent retrieval.

According to one exemplary embodiment, the types of data that can bemaintained in the frames database 97 of the database application 74, mayinclude, for example:

-   -   An exemplary frame entry, which may store image frames on a        frame-by frame or other basis.    -   An exemplary event time entry that may record the date and time        established by the time-encoding service 86 for an image frame.    -   An exemplary device ID entry that may record a unique        identification name, number or other indicator for the client        device or other source that captured and transmitted the image        frame, as described further below.    -   Exemplary location entries (i.e., latitude entry, longitude        entry, altitude entry etc.) that may capture and maintain        designated location information associated with the image frame.    -   An exemplary timestamp entry may record the date and time that        the available location data was first delivered to the command        center server 12. One or more additional databases associated        with database application 74 are discussed in further detail        below.

(c) The Messaging and Routing Service

As shown on the preceding FIG. 3C, the messaging and routing service 81may include one or more components, such as a check-in service 110, amessage delivery service 111 and a roving camera service 112. Accordingto an exemplary embodiment and as described further below, the check-inservice 110 may exchange data with any one or more client devices atdesignated time intervals, the message delivery service 111 may receivemessages, commands and other data from command center PC 22 or any otherclient device and then route them to the message queue 98 to await thenext check-in service 110, and the roving camera service 112 maycommunicate information about the client devices when they stream livevideo and other data files to command center server 12.

Further, in one embodiment the messaging and routing service 81 may beimplemented as a SOAP-based Web service. SOAP, or Simple Object AccessProtocol, is well known to those of ordinary skill in the art, and isnot described further in the interest of brevity.

(d) The Cataloging Service

As shown in FIG. 3C, the cataloging service 82 may include a datarepository, such as an XML (Extensible Markup Language) or othersuitable data file (camera catalog) 115. An exemplary camera catalog 115may maintain an entry for each fixed camera 6 selected by anorganization. XML is a technology well known to those of ordinary skillin the art and is not described further in the interest of brevity.According to one exemplary embodiment, an organization may includeseparate entries in camera catalog 115 for each fixed camera 6,including one or more of its networked cameras and other camerasavailable to it.

One or more exemplary types of data may be maintained in camera catalog115 and incorporated into the system 100. For example,

-   -   Fields may include any information for locating and accessing a        fixed camera 6 on an IP network, such as the URI (Uniform        Resource Identifier). URI is a term well known to those of        ordinary skill in the art, and is not described further in the        interest of brevity.    -   Fields may also include an abbreviated and more recognizable        caption for a fixed camera 6 in the system 100, such as the        “5^(th) Avenue camera.”    -   Fields may further include identifying information about a fixed        camera 6 itself, such as its make and model number.    -   Fields may also include information regarding the physical        location of each fixed camera 6, such as the country, state or        province, and city. An organization can include any other        relevant information as well such as, for example, the closest        street address.    -   Fields may include the available location data for each fixed        camera 6, such as longitude, latitude, range, tilt, heading etc.    -   Fields may include any amount of descriptive text about each        fixed camera 6, such as a description of the physical terrain        being monitored by that camera and other distinguishing        characteristics.    -   Fields may include information on how to control the available        PTZ functions on a fixed camera 6. Fields may also include        information enabling remote control in any direction otherwise        permitted by the camera.

2. Server Configuration Options

Referring again to FIG. 1, according to one exemplary embodiment, theserver software 14 may be configured to scale readily with the number ofclient devices. The server hardware 16 itself may support a specifiednumber of client devices streaming live imagery and other data (e.g.,location data, audio data, etc.) to and from any command center server12 at substantially the same time. The number can vary, depending on thecapacity of the particular server hardware 16 and the available networkthroughput. As one of ordinary skill in the art can appreciate, thoseare variable limitations based on the hardware and network constraintsand not on the system and method according to exemplary embodiments ofthe invention.

The server software 14 may be configured to accommodate one or moreadditional client devices. First, different and/or additional serverhardware 16 may be communicatively coupled to command center server 12,in which case data stored on those pieces of hardware may become anintegrated pool of information. For example, command center server 12Aillustrates two or more pieces of server hardware 16 communicativelycoupled to one other.

Second, an organization may allocate client devices to geographicallydispersed command center servers 12A, 12B. For example, in FIG. 1command center server 12B is shown in a separate physical location fromcommand center server 12A. As shown, command center server 12B may beconfigured with a single piece of server hardware 16, or in an alternateembodiment, command center server 12B can be configured with additionalpieces of server hardware 16 as well to accommodate a higher data loadat that physical location.

If an organization opts for geographically dispersed command centerservers 12 (whether each geographic location is configured with a singlepiece of server hardware 16 or multiple interconnected pieces of serverhardware 16), the data stored at each separate location may include aseparate library that can be accessed remotely by any command centeroperator. In addition, the desktop application 20 may include adrop-down menu or other method allowing a command center operator toremotely access any of the organization's command center servers 12.Further, the separate command center servers 12 can be configured toexchange data among them according to an embodiment of the presentinvention.

Further, and as noted earlier, the system 100 may comprise one or moreadditional command center servers 12, such as proxy servers, datagateways, and other intervening servers, to facilitate the flow of datafiles to, from and among client devices within the system 100.

E. Desktop Application

FIG. 4 is a schematic block diagram of an exemplary disclosed commandcenter PC 22 that is running the desktop application 20 consistent withone exemplary embodiment. As with a desktop client device 5, commandcenter PC 22 may include any personal computer, laptop or other fixed ormobile computing platform that is capable of running an operating system173, such as, for example, the Windows 2000® operating system or a laterversion. Each command center PC 22 may also include, among othercomponents, a hard drive 170, memory 171 and a keyboard 172. Desktopapplication 20 may run on the operating system 173, together with one ormore integrated GIS or other available mapping applications (GIS viewingapplication) 176, such as the Google Earth® viewing application.Alternatively, the GIS viewing application 176 may be a Web-basedservice such as, for example, Microsoft® Virtual Earth®. The commandcenter PC 22 may include additional, fewer, and/or different componentsthan those listed above.

As shown on FIG. 4, the command center PC 22 can further comprise one ormore computer monitors or any other video display system integrated intothe system 100. In the case of one or more computer monitors, forexample, an exemplary control monitor 178 may display the desktopapplication described further below while one or more additionalcomputer monitors—viewing monitors 180 a, 180 b—may display datacollected through the system 100 in various formats, such as viewingimage streams from the fixed cameras 6 or from any client device usingone or more integrated GIS viewing applications 176. In anotherembodiment, an organization may use a single display monitor, as in thecase of a laptop, in which case the command center operator may simplytoggle between screens or display them simultaneously in separatewindows, etc.

The command center PC 22 may also include any hardware and softwarecomponents typically found in a computer, the details of which areomitted in the interest of brevity. The desktop application 20 will bediscussed in greater detail below.

F. Access Controls

In one embodiment with respect to FIG. 2B, the system 100 may include,among other potential security protocols, various access controls whichmay be configured to establish permissions associated with one or moreusers and/or client devices associated with the system. For example,these access controls may regulate when, and under what circumstances,any party to the system 100 may exercise command and controlfunctionality, including, for example, the ability to establish whetherand under what circumstances a client device may access a particularfixed camera 6 or other client device or when one client device mayremotely cause a second client device to take a particular action or tocease taking a particular action. It is further contemplated thatcertain authentication mechanisms (e.g., password prompts, etc.) may beprovided to prevent unauthorized access to or use of the system 100.

II. Methods for Using the Client Devices

As noted earlier, the client software may comprise one or more majorfunctions—such as the configuration function 55, the history function56, the panic function 57, the transmit function 58, the watch function59, the archive function 60, the upload function 61 and the commandfunction 62—which interact with and command the capabilities of theclient device. Depending on the operating system of the client device 2,each major function may be a separate software application or they maybe combined into a single application, or some other variation.

Once the client software has been installed on the client device, eachmajor function (and/or any associated subfunction) may be represented bya distinctive icon or other indicator in the client device menu system.Additionally and/or alternatively, any major function, and anyassociated subfunction, may include various short-cut methods allowingit to be launched (or allowing specific functionality to be exercisedafter it has been launched), such as by pressing a designated hardwarebutton, or combination of buttons, on the client device or by using acustomized “hot” key, or combination of hot keys, on the client devicekeyboard or other user interface. Those skilled in the art willrecognize that particular short-cut methods available to initiate afunction or subfunction may vary depending on the specific clientdevice. Set forth below for illustrative purposes are examples of someof the types of major functions and associated subfunctions that may beincorporated into the client software. As noted earlier, and accordingto one embodiment, the client software is designed to function insubstantially the same manner on all client devices, but the precisefunctionality may vary depending on the underlying functionality of thecomputing platform on which the client software is running For example,as described further below, one aspect of the system 100 allows acommand center PC 22 or a client device to remotely command a secondclient device, causing the second client device to display a live imagestream from a fixed camera 6 or other source. Those skilled in the artwill recognize that viewing options for a mobile client device 2 suchas, for example, a commercially available smartphone, may besubstantially more limiting than those for a desktop client device.

A. The Configuration Function

The configuration function 55 may comprise any number of subfunctionsrelating to the manner in which the client software is configured to runon the client device and to communicate with the command center server12 and the other components of the system 100. According to oneexemplary embodiment, the configuration function 55 may, for example,include a status subfunction, a server subfunction, an ID subfunction,and a location subfunction.

1. The Status Subfunction

In one embodiment, the status subfunction in the configuration function55 may allow the client device to operate in one or more differentcommunication modes, such as in an on-duty mode and/or an off-duty mode.According to an exemplary embodiment, the on-duty mode may be configuredto ensure that the client device is in communication with the commandcenter server 12 check-in service 110 via the applicable wirelessnetwork 4 or wired network 8 (or a combination of the two) in order toexchange available data, and off-duty mode may be configured to suspendcommunications between the client device and the command center server12. In one embodiment, a user may switch between on-duty mode andoff-duty mode by selecting a single command available on the clientdevice.

In an alternate embodiment, if a user launches a different function onthe client device at a time when the client device is in off-duty mode,such as if the user launches the transmit function 58 or the panicfunction 57, the configuration function 55 may be configured so that theclient device may also automatically establish a connection to thecheck-in service 110 and go into on-duty mode without additional userinput.

As explained for one embodiment below with respect to the routing ofmessages, commands, and other data within the system 100, while inon-duty mode 218, the client device and the check-in service 110 may beconfigured to exchange available data at a designated time intervalmeasured in seconds, minutes or longer. By way of example, the on-dutymode can be configured to exchange available data with the check-inservice 110 every 15 seconds. With each exchange, the check-in service110 may report a connection time to a designated entry in both the lastknown table 96 and the position log 95, according to one embodiment.

2. The Servers Subfunction

As noted earlier, each client device 2 may be assigned to a commandcenter server 12. In one embodiment, the servers subfunction in theconfiguration function 55 may allow the user to assign the client deviceto a particular command center server 12 or, additionally and/oralternatively, may allow the command center server 12 to remotely causethe client device to be assigned to a particular command center server12. If, for example, the organization is using geographically dispersedcommand center servers 12, the organization may assign client devices 2to different command center servers 12 at different times for differentpurposes.

According to one embodiment, three separate server assignments may bespecified according to an exemplary embodiment:

-   -   The messaging and routing assignment may establish a connection        to the server running the check-in service 110 (as shown on the        preceding FIG. 3C).    -   The camera settings assignment may establish a connection to the        server running the reception service 85 (as shown on the        preceding FIG. 3C).    -   The viewer settings assignment may establish a connection to the        server running the cataloging service 82 (as shown on the        preceding FIG. 3C).

A client device may have, for illustrative purposes, been assigned tothe same command center server 12 for all purposes. While that may wellbe a typical situation, there may be circumstances where the clientdevice is temporarily connected to a different command center server 12to perform a specific task. For example, a user normally assigned to acommand center server 12 in Miami may be asked to transmit particularlive imagery directly to a different command center server 12 located inLos Angeles. In that example, the camera settings assignment 245 mayneed to be changed accordingly to reflect the appropriate server addressfield and port field according to an embodiment of the presentinvention.

3. The ID Subfunction

In one embodiment, the ID subfunction in the configuration function 55may display the unique identification name, number or other applicableidentifier (device ID) which has been selected by the organization totrack that client device in the system 100.

4. The Location Subfunction

As noted earlier, a client device may have an internal GPS receiver 45,an external GPS receiver 47 or other available location technology toobtain location data. In one embodiment, the location subfunction in theconfiguration function 55 may allow the user to engage a locationtechnology (or to choose from a plurality of available locationtechnologies) in order to collect the outputted location data associatedwith the client device and transmit the data to one or more devicesassociated with the system 100.

Those skilled in the art will recognize that location data may beoutputted in different formats depending on the specific locationtechnology. For example, the NMEA® (National Marine ElectronicsAssociation) format outputs GPS data in strings of data referred to assentences, which may contain a plurality of data, including informationabout each satellite that is being used to triangulate a device'sposition. In the system 100, different methods may be used to captureand transmit outputted location data from the location technology to thecommand center server 12, according to an embodiment of the invention.

In one embodiment, the location subfunction may capture the outputtedlocation data without change, store the data temporarily in the clientdevice memory and transmit the data to the command center server 12 withthe next connection to the check-in service 110. As described furtherbelow, the check-in service 110 may route the location data to the lastknown table 96 and the position log 95. As noted earlier, there may beseparate (and identical) entries in the last known table 96 and theposition log 95 to store the incoming location data based on the deviceID of the transmitting client device and the nature of the specificlocation data. For example, the device ID of a client device may bestored in a device ID entry, latitude data may be stored in a latitudeentry, longitude data may be stored in a longitude entry, altitude datamay be stored in an altitude entry, etc.

In another embodiment, the location subfunction may parse the locationdata to extract designated coordinates (such as longitude, latitude,altitude, heading etc.), store the parsed data in the client devicememory, and then transmit the parsed data to the command center server12 with the next connection to the check-in service 110.

Additionally and/or alternatively, the outputted location data (whetherparsed or without change) may be transmitted to the command centerserver 12 through another function such as the transmit function 58. Forexample, as described further below, if a client device is transmittingvideo data to the image service 80, the available location data may betransmitted directly to the image service 80 as well by different means,such as by sending the location data as a separate stream or by firstembedding the location data into the image frames on the client deviceand then sending the integrated video and location data to the imageservice 80.

Those skilled in the art will recognize that other types of locationdata, alternatively and/or in addition to GPS data, may be used insystem 100. For example, in another embodiment, the command centerserver 12 is designed to allow integration with any availablelocation-based service offered by the commercial wireless carriersthrough the federally-mandated E911 initiative (all such data beingreferred to generally as the E911 data), as described further below.

FIGS. 5A-5C illustrate a flow diagram of an exemplary method 300 thatmay be used when a user has access to two or more methods for retrievinglocation data. One of ordinary skill will further recognize that thespecific steps involved may vary depending on the functionality of theclient device and the underlying location technology, the nature of thelocation data being transmitted by the location technology, the mannerin which client device and the location technology are communicativelycoupled, and/or how the location data is processed by the command centerserver 12. Thus, the following discussion of steps 302-344 is intendedto provide illustrative examples of the steps that may be undertaken bymethod 300, according to one embodiment of the present invention.

As shown in FIG. 5A, method 300 may begin with step 302, in which theuser seeks to engage a location technology on the client device. In step304, method 300 may determine whether the client device has an internalGPS receiver 45 or a physically attached external GPS receiver (ineither case, an attached GPS receiver).

If the client device has an attached GPS receiver, (“yes” path from step304), the user may power on the attached GPS receiver using any methodotherwise permitted by the attached GPS receiver (Step 306). Asdescribed earlier, the user may engage the location subfunction tocommence retrieving GPS data from the GPS receiver (Step 308); thelocation subfunction may receive (and, if so configured, parse) theincoming GPS data (Step 310); and the relevant GPS data may be storedtemporarily on the client device (Step 312). Additionally oralternatively the relevant GPS data may be streamed to the image service80 through the transmit function 58.

If the client device does not have an attached GPS receiver (“no” pathfrom step 304), method 300 may determine whether any other type ofexternal GPS receiver 47 or other available location technology isavailable, such as, for example, a Bluetooth-enabled GPS receiverconnected via a wireless network 4 to the client device (Step 314). If alocation technology is available (“yes” path from step 314), the usermay power on the location technology using any method permitted by thattechnology (Step 316). The user may engage the location subfunction tocommand the device to begin feeding the GPS data in the manner set forthabove (Step 318); the location subfunction may receive (and, if engaged,parse) the incoming GPS data (Step 310); and the relevant GPS data maybe stored temporarily on the client device (Step 312).

As shown on FIG. 5B, method 300 determines in Step 325 whether the userwishes to continue to retrieve GPS data. In some situations, forexample, the user may have decided to turn off an attached GPS receiveror there may be an error condition (such as a hardware or softwarefailure on the GPS receiver or a loss of connectivity) interrupting theconnection. If the user wishes to continue (Step 326: Yes), method 300will wait a designated interval before the location sub functionproceeds to retrieve incoming GPS data (Step 310, as described earlier).If the user does not wish to continue (Step 326: No), the retrieval ofGPS data will end until the user next engages the location subfunction.

As further shown on FIG. 5B, method 300 determines in step 320 whether asuccessful connection has occurred between the client device and thecommand center server 12. If a successful connection has occurred (Step320: yes), method 300 will determine in step 321 whether there is anystored GPS data. If there is stored GPS data (Step 321: yes), the GPSdata may be transmitted in step 322 from the client device to thecommand center server 12. If there is no stored GPS data (Step 321: no),method 300 may wait until the next successful connection to the commandcenter server 12 to again determine whether there is any stored GPSdata.

If a successful connection has not occurred between the client deviceand the command center server 12, the GPS data may remain stored on theclient device memory until the next successful connection to the commandcenter server 12 (Step 312).

As shown on FIG. 5C, in step 326 the GPS data may be received by thecommand center server 12. In step 332, the command center server maydetermine whether the GPS data is valid. The validity determination instep 332 may encompass such criteria as the age of the data, fix qualityand horizontal dilution, among others.

If the GPS data is valid (“yes” path from step 332), the command centerserver 12 may in step 334 route the GPS data to the last known table 96and the position log 95, as described above. If the GPS data is notvalid (“no” path from step 332), the method 300 may proceed to step 330.

In step 330, method 300 may determine whether location data from anothersource, such as E911 data, may be available for the client device. Ifthere is no location data available from another source (“no” path fromstep 330), method 300 may in step 336 set the last known position valuesto “Empty”—indicating that no known position is currently available—androute that information to the last known table 96 and the position log95. If there is location data available (“yes” path from step 330),method 300 may proceed in step 338 to retrieve the available locationdata, either through the client device or directly from the wirelesscarrier.

In step 344, method 300 may determine whether the other location data isvalid. As noted earlier in the case of step 332, the validitydetermination in step 344 may encompass such criteria as the age of thedata, fix quality and horizontal dilution, among others. If the otherlocation data is valid (“yes” path from step 344), that information maybe routed to the last known table 96 and the position log 95. If theother location data is not valid (“no” path from step 344), method 300may in step 336 set the last known position values to “Empty”—indicatingthat no known position is currently available—and route that informationto the last known table 96 and the position log 95 (step 334).

5. On-Duty Mode

FIG. 5D is a schematic block diagram illustrating an exemplary data flow350 by which a client device may transmit and receive data while inon-duty mode. As noted earlier in one embodiment, at a predeterminedtime interval, the client device may in path 350 communicate with thecheck-in service 110. At that time, the client device may be configuredto transmit to the check-in service 110 its device ID and any availablelocation data. In addition, at the same time or at other designatedintervals, the client device may be configured to transmit otherdesignated data as well relating to the client device (or to any otherdevice that may be communicatively coupled with the client device), suchas battery level, available broadband networks, signal strength etc. Thecheck-in service 110 may then in path 352 route that data to theposition log 95 and the last known table 96. At the same time, thecheck-in service 110 may in path 354 retrieve any pending messages orcommands from the message queue 98 and route them in path 356 to theclient device. As noted earlier, the message queue 98 may temporarilystore messages, commands and other data communications that havepreviously been sent in path 358 from command center PC 22 or anotherclient device to the message delivery service 111, which in turn mayroute them in path 360 to the message queue 98. The process of sendingmessages, commands and other data communications to, from and amongclient devices is discussed in greater detail below.

B. The History Function

As noted earlier, in one embodiment, a user may access a historyfunction 56 on the client device which may maintain, along with otherinformation, an updated record of each instance in which the clientdevice has received a message, command or other data communication fromcommand center server 12, together with associated information such asthe date and time that the communication was first sent to the clientdevice and the identity of the sender.

For example, the history function 56 may show that a client devicepreviously received a command from the command center PC 22 or anotherclient device on Nov. 30, 2006 at 11:18 pm to cause a specific imagefile to be displayed automatically on the client device display screen.In one embodiment, if the user highlights that specific action, theoriginal image file may be retrieved from the command center server 12(or, if applicable, an updated version of that image file since it wasfirst distributed to the client device) and again displayed on theclient device.

In one embodiment, the user may clear all or part of the historicalrecord at any point by accessing a drop-down menu or other selectionmethod incorporated into the history function 56.

C. The Panic Function

In one embodiment, the panic function 57 may allow a user to initiate apanic mode causing the client device to send an immediate alert (silentor otherwise) to the command center server 12 and automatically initiatethe transmit function 58 on the client device, if available. The clientdevice display screen may also display a panic message confirming to theuser that the panic function 57 has been launched.

In one embodiment, a user may also use multiple methods to cancel thepanic mode, including, for example, by exiting the transmit function 58at any point if it is then engaged. In one embodiment, command center PC22 may also terminate panic function 57 remotely and automatically bysending a designated command to the client device.

D. The Transmit Function

A transmit function 58 may allow a user to capture and transmit livevideo from the client device to the command center server 12 imageservice 80 in many different ways. In one embodiment, live audio may betransmitted with, or instead of, the live video. For example, a user mayfirst record and transmit an explanatory audio message (e.g., “I'm aboutto send you video of . . . ”) and then transmit the live video stream oralternatively the audio and video may be transmitted contemporaneously,in one embodiment.

In another embodiment, a user may assign a priority tag to certain imageframes as the video stream is being sent to the command center server 12in a manner that does not interrupt the data transmission. By way ofillustration, a user may wish to tag a particular two minutes of a 30minute transmission by selecting a single key or combination of keys orother available methods to commence the priority tagging and thenselecting the same or different keys to terminate the tagging. Asdescribed further below, the user may then, in one embodiment,subsequently search for and retrieve those frames based on the prioritytagging.

In yet another embodiment, location information and other applicabledata, such as sensor data (e.g. temperature, radiation levels, etc.) mayalso be transmitted, with or without live video and/or audio data.Additionally and/or alternatively, and as noted earlier, such data mayalso be captured and transmitted from the client device to the commandcenter server 12.

FIG. 6 is a schematic block diagram illustrating an exemplary data flow400 by which the transmit function 58 may allow a user to capture andtransmit live video from the client device to the command center server12. In the embodiment shown:

-   -   In path 401, an reception service 85 may receive live video        images captured by the client device—together with other        designated data captured by the client device such as audio        files, sensor data etc.—and transcode them into the applicable        file format. The process of capturing live video images on the        client device is discussed in greater detail below.    -   In path 402, each image frame may then be routed to a        time-encoding service 86, which may incorporate the current date        and time into each frame's image format and other relevant data.        In addition, the reception service 85 may send a notification to        designated entries in the last known table 96 and the position        log 95 that the transmit function 58 has been launched,        according to one embodiment.    -   In path 404, each frame may then be stored temporarily in an        image buffer 87 on a first-in, first-out basis.    -   In path 406, each frame may then be routed to a geocoding        service 88.    -   In path 408, the geocoding service 88 may retrieve from the last        known table 96 the last known location data for the client        device (as discussed earlier) and, if applicable, reformat the        image frame to incorporate those coordinates as well, according        to one embodiment. Alternatively, as noted earlier, the location        data may already have been incorporated into the image frames by        the client device.    -   In path 410, the geocoding service 88 may then route each image        frame to the frames database 97 for storage and subsequent        retrieval, according to an embodiment of the present invention.

In another embodiment, system 100 may employ a similar method to captureand transmit live audio, sensor data and other available data files fromthe client device. One of ordinary skill will recognize that thespecific steps involved will vary depending on the nature of the datafiles being transferred. For example, the transfer of audio or sensordata in addition to, or in lieu of, live video images may or may notrequire its own compression technology and other variations depending onthe size and characteristics of the data files involved. Thus, thepreceding discussion of paths 401-410 is intended to provideillustrative examples of the steps that may be undertaken by data flow400, according to one embodiment of the present invention.

1. Image Attributes

One of ordinary skill in the art will appreciate that the specificprocess of capturing and transmitting live video images from the clientdevice may vary depending on the specific functionality of the clientdevice, including variables such as the nature of the operating systeminstalled on the device, the available application programming interface(API) and whether the camera is embedded in the device orcommunicatively coupled with it. The following discussion is intended toprovide an illustrative example of the type of steps that may be takento capture and transmit live imagery from the client device. Forillustrative purposes, it is assumed that the client device has anembedded camera, but a substantially similar method may be employed tothe extent the camera is communicatively coupled to the client device,according to an embodiment of the present invention.

In one embodiment, the client device has embedded in it an imagemanagement library, for example, as installed by the hardwaremanufacturer. The library has the ability to manipulate the raw imagedata being collected by the sensors of the client device's embeddedcamera in multiple ways, including the ability to capture raw imagedata, format it as image frames, and save the frames to a photo librarymaintained on the client device. Additional information about imagemanagement libraries is omitted for reasons of brevity, as those ofordinary skill in the art of the present invention understand theiroperations.

In a further embodiment, the transmit function 58 may use the availableimage management library API to programmatically manipulate the rawimage data collected by a client device and stream it directly to thereception service 85 of a command center server 12. As described furtherbelow, while the transmit function 58 is engaged, it may retrieve rawimage data using the device API, format it in a JPEG or other suitableformat and compress it for transmission to the command center server 12.In one embodiment, this may occur approximately every 1/10 second. Atthe same time, if desired, the user may view on the client devicedisplay screen the live imagery as it is being transmitted.

In another embodiment, the transmit function 58 may not import the imagecompression function from the image management library if a moreefficient third-party compression technology is available. This may bedesirable to optimize the speed at which individual image frames aretransmitted to command center server 12. No additional information isprovided about third-party compression applications that may beintegrated into the transmit function 58, as compression processes arewell understood by those of ordinary skill in the art.

In another embodiment, each image frame may be watermarked forauthentication purposes. Digital watermarks are generally used for oneor more purposes such as, for example, data monitoring, copyrightprotection and data authentication. Digital watermarking can be eithervisible or invisible to the viewer. A visible watermark is primarilydesigned to display a copyright notice, telling the viewer who owns theimage rights. An invisible watermark can also be used to assert acopyright, but it is designed to catch those persons who may try toinfringe on the copyright by using the image without the owner'spermission. Watermarks can also be used to authenticate the integrity ofan image. When used for this purpose, a software program is used tocalculate a unique number using the image data. To establish specificownership of the image, an encryption key assigned to the owner of theimage can be used to encrypt the unique number generated from the image.The encrypted number is then inserted, by various methods, into theimage itself. If ownership is not important, then only the unencryptedvalue is used. Though the actual techniques used are complex and varyfrom one manufacturer to another, the process of inserting this valueinto the image alters the image data.

2. Image Quality Control

In one embodiment, while the transit function 58 is transmitting livevideo images, the user may adjust the image quality, such as through theuse of a slide control that, for example, may be accessed through adrop-down menu or other selection method incorporated into the transmitfunction 58.

The use of a slide control or other alternative method may allow theuser to make a tradeoff (or to be directed by a command center operatorto make a tradeoff) within a certain predetermined range between imagequality and the speed at which imagery is transmitted to command centerserver 12. For example, the user may use the applicable image qualitycontrol to change the image resolution or the compression level. Inanother embodiment of the present invention, a command center operatoror another client device may remotely alter the transmitted imagequality on the transmitting client device by sending the appropriatecommand to the transmitting client device.

E. The Watch Function

According to one embodiment, the watch function 59 may operate on theclient device in a minimum of two modes: a search mode and a viewingmode.

1. Search Mode

According to one embodiment, a client device display screen may beconfigured to display a search mode when the watch function 59 islaunched on the client device. The search mode may include foursubfunctions according to one embodiment: a favorites subfunction, abrowse subfunction, a find subfunction and a roving subfunction.

As described in more detail below, and according to an exemplaryembodiment:

-   -   A favorites subfunction may allow the user to maintain on the        client device a directory of bookmarked fixed cameras 6 and        other client devices that may be accessed easily to view live        video images being sent by them.    -   A browse subfunction may allow the user to remotely search for        available fixed cameras 6 based on different criteria, such as        geographic location.    -   A find subfunction may allow the user to remotely search for        available fixed cameras 6 by using a simple text search.    -   A roving subfunction may allow the user to remotely search for        and view live video images being transmitted by another client        device.

(a) The Favorites Subfunction

In one embodiment, a favorites subfunction may allow the user to usedifferent methods to bookmark on the client device any fixed camera 6 orother client device for subsequent selection and live viewing. In oneembodiment, for example, a user may select a command shown on thedisplay screen while the watch function 59 is engaged. Once the user hasselected a particular camera for bookmarking, it may then appearautomatically on the list of bookmarked cameras appearing in thefavorites subfunction, with or without a separate notification alertingthe user as to whether that bookmarked camera is then streaming liveimagery, according to one embodiment. The user may then select anybookmarked camera for immediate live viewing (if then available) throughthe watch function 59 viewing mode described further below.

(b) The Browse Subfunction

In one embodiment, a browse subfunction in the watch function 59 mayallow the user to remotely search for fixed cameras 6 available in thecatalog service 82 (as shown on the preceding FIG. 3C) based ondifferent criteria, such as the camera's geographical location. Thebrowse subfunction may include various search methods, such as, forexample, a hierarchical ordering of the data in a tree format or throughthe use of pull-down lists or other applicable user prompts. Accordingto one embodiment, each time the watch function 59 is launched on theclient device, the browse subfunction may establish an availableconnection to the cataloging service 82 in order to search its cameracatalog 115 to populate the applicable user prompts.

In other embodiments, the user may select the applicable search criteriain order to produce a resulting list of fixed cameras 6 available forviewing.

As noted earlier, if an organization has geographically dispersedcommand center servers 12, and each corresponding cataloging service 82maintains a different camera catalog 115 (such as each regional officemaintaining a database of its regional fixed cameras 6 only), then inone embodiment the user may remotely access the different catalogingservices 82 by changing a viewer settings assignment on the clientdevice to the relevant command center server 12 (or by having thecommand center server 12 remotely change the viewing settingsassignment).

(c) The Find Subfunction

In one embodiment, a find subfunction in the watch function 59 may allowthe user to remotely search for fixed cameras 6 available in the catalogservice 82 by using a simple text search. Each time the find subfunctionis accessed, the user may be directed on the client device displayscreen to a query field, according to one embodiment. To initiate asearch, the user may type one or more letters, numbers or othercharacters (collectively, query terms) in the query field to initiatethe search or simply select a separate option to poll all of the camerasin the catalog service 82. The find subfunction may then establish anavailable connection to the cataloging service 82, which may search itscamera catalog to identify a list of available fixed cameras 6 that havethe query terms in any of their respective camera catalog fields. A usermay then select any available fixed camera 6 and display the live imagestream from that camera on the client device display screen.

(d) The Roving Subfunction

In one embodiment, a roving subfunction in the watch function 59 mayallow the user to remotely search for and view live video images whilethey are being simultaneously transmitted by another client device to acommand center server 12.

As illustrated by the exemplary data flow diagram shown on FIG. 7, whenthe roving tab has been selected the roving subfunction may, in path540, establish an available connection to the roving camera service 112of the messaging and routing service 81 and request a list of availableclient devices. In response, the roving cameras service 112 may firstdetermine what other client devices are then connected to the samemessaging and routing service 81. In path 542 the roving camera service112 may then communicate with the last known table 96 in the databaseapplication 74 to determine which of those client devices are thentransmitting live video. Based on the determination, the roving cameraservice 112 may then in path 544 report the resulting information backto the roving function. The resulting list of client devices may appearon the client device display screen. The user may then select anyresulting client device to display the live video stream from thatdevice.

As with the desktop application 20, the watch function 59 and othercomponents of the client software may incorporate various additionalfiltering and sorting options as well, including, for example, theability to further refine search results, according to one embodiment.

2. Viewing Mode

As noted earlier, the watch function 59 viewing mode may display anylive imagery selected by the user through the watch function 59 searchmode that may be streaming by a fixed camera 6 or by another clientdevice. In one embodiment, the method for displaying the live imagery onthe display screen varies depending on whether the user has selected afixed camera 6 or another client device. As noted earlier, the manner inwhich the live imagery is displayed on the client device may also varydepending on the underlying functionality of the client device, amongother potential variables.

(a) Fixed Camera Viewing

In one embodiment, if the user has selected a fixed camera 6 during thesearch mode, the watch function 59 may retrieve from the catalogingservice 82 the IP network information needed to access the fixed camera6 directly from the client device. As noted earlier, that informationmay include the URI identified in one or more camera catalog fields.With the IP network information, the watch function 59 may assemble theunique URI of the fixed camera 6 and cause the client device displayscreen to commence displaying the live image stream from that fixedcamera 6. In an alternative embodiment, an intervening command centerserver 12 may be used in the system 100 to act as a proxy server betweenthe fixed cameras 6 and the client devices. In that case, theintervening server 12 may establish the direct connection to the fixedcamera 6, and the watch function 59 may use the unique URI of theintervening server 12 to cause the client device to display the liveimage stream from that fixed camera 6. As noted earlier, the use of aproxy server may permit multiple simultaneous requests by client devicesto access one or more fixed cameras 6 that may otherwise be limited inthe number of direct simultaneous connections they will support.

Once the watch function 59 has established a direct or indirectconnection to the fixed camera 6, a user may use various methods to exitthe watch function 59 viewing mode and return to the watch function 59search mode, such as, for example, by selecting a menu option on theclient device display screen.

(b) Mobile Client Device Viewing

Similarly, if the user has selected a client device during the searchmode, the watch function 59 may establish a direct IP connection to theimage buffer 87 on the command center server 12 that is temporarilystoring the live image stream transmitted by that client device, andthereby commence displaying that live image stream on the displayscreen. According to one embodiment, the watch function may compute theIP address of the appropriate image buffer 87 based on the device ID ofthe transmitting client device and on the IP address of the commandcenter server 12 which is receiving the live image stream (that is, theIP address shown in the server address field in the camera settingsassignment, according to one embodiment).

(c) PTZ Controls

As noted earlier, an organization may include in camera catalog 115information on how to control remotely the available PTZ movements for afixed camera 6. According to an exemplary embodiment, when the watchfunction 59 is in view mode, it may request PTZ information from thecataloging service 82 and store it temporarily on the client devicememory. If there is available information, the letters PTZ may appear onthe display screen and the user may be able to remotely control theavailable PTZ movements from the client device. By way of example, ifthe information is available in camera catalog 115, the user may be ableto remotely cause the fixed camera 6 to move to the extent otherwisepermitted by the fixed camera 6.

(d) Playback Controls

In one embodiment, the client software may incorporate a separate imagebuffer which may temporarily store on the client device any live imagestream displayed on the client device from a fixed camera 6, anotherclient device or another source and allow the user to exercise variousplayback and distribution functions. According to one embodiment, thisis substantially the same type of functionality available to a commandcenter operator running a command center PC 22, and the process fordoing so is discussed in greater detail below.

F. The Archive Function

In one embodiment, the archive function 60 may allow a user to remotelysearch for and view archived imagery previously captured by the system100. As described in greater detail below, the client device mayestablish a connection to the archiving service 89 (shown on thepreceding FIG. 3C) to process requests to view the archived images.

G. The Upload Function

In one embodiment, the upload function 61 may allow a user to remotelyupload any image file (.jpg, .bmp, .gif etc) or other data file from theclient device to the command center server 12 for storage and immediateor subsequent redistribution within the system 100. The uploaded datafile may originate from numerous sources, including, for example, theclient device itself (hard drive, flash drive, disc, DVD-ROM, etc.), orfrom another data collection source that is communicatively coupled tothe client device, or from an uncoupled source, such as a separatedigital photo or other data file stored on a compact flash, SD card orother media.

The uploaded file may be processed in different ways in the system 100depending on its characteristics. An image file, for example, may beprocessed by the image service 80 and stored in the frames database 97in substantially the same manner as a live video stream from a clientdevice. Other data files, such as sensor data, may be received,processed and stored differently by the command center server 12 basedon their specific characteristics.

H. The Command Function

In one embodiment, the command function 62 may allow the user toexercise on the client device some, all or none of the command andcontrol functionality that a command center operator may exercise fromthe command center PC 22 with respect to the creation and communicationof data files within the system 100. In one embodiment, thisfunctionality may be accomplished through the command center server 12messaging and routing function described further below.

III. Methods for Using the Desktop Application

As noted earlier, embodiments of the desktop application 20 may beconfigured to work with a single viewing monitor (as on a laptop, forexample) or in a multi-monitor setup or other video display system thatmay, for example, have a single control monitor 178 and one or moreviewing monitors 180 a, 180 b (as shown on the preceding FIG. 4), orother suitable viewing displays. For illustrative purposes, thefollowing discussion describes how one embodiment of the desktopapplication 20 may work with one control monitor 178 and one viewingmonitor 180 placed side-by-side. In embodiments consistent with theinvention, the desktop application can be loaded onto the command centerPC, or be a Web-based application that is accessed by the command centerPC through its Web browser. Alternatively and/or additionally, thedesktop application may include a stand-alone application suitable fordownloading and use on a client device or other available computingplatform.

According to one embodiment, when the desktop application 20 is openedon the command center PC 22, a management console may appear on thecontrol monitor 178 and one or more GIS viewing applications 176 may beopened also for viewing on the viewing monitor 180. The mapping dataavailable through one GIS viewing application 176 may be integrated intothe viewing display of one or more different GIS viewing applications176. Those skilled in the art will recognize that there are manydifferent GIS viewing applications 176 available, each of which mayinclude its own customized format and functions. The desktop application20 may be designed to work with any GIS viewing application 176according to its application programming interface.

A. Fixed Camera Search Function

In one embodiment, each time the desktop application 20 is launched, themanagement console may automatically poll the cataloging service 82 andpresent a list of all the available fixed cameras 6 in various formats.

B. Fixed Camera Viewing Function

In one embodiment, once the list of available cameras is displayed onthe management console, the command center operator may use variousmethods to select any one or more of the listed cameras, including, forexample, by clicking on a listed camera or by selecting one or moreavailable menu options. Once a camera is selected, the desktopapplication 20 may retrieve from the command center PC 22 memory 171 theavailable URI for the selected fixed camera 6 (as the watch function 59may do so when viewing a fixed camera 6 from a client device, asdiscussed earlier). The desktop application 20 may then open a direct IPconnection to that fixed camera 6 and open a viewing window on theviewing monitor 180 to display the live image stream from that camera.

As described in greater detail below and according to one exemplaryembodiment, each viewing window may have its own dedicated image buffer(separate from the image buffer 87 maintained in the command centerserver 12), which temporarily records the live image stream and mayallow the command center operator to exercise various playback controls,including the ability to pause, rewind and fast-forward through theimage stream, and to distribute recorded images within and outside anorganization via system 100.

In one embodiment, the command center operator may have additionalviewing options if camera catalog 115 includes location data for aselected fixed camera 6. If there is no available data, a GIS viewingapplication 176 may not become engaged while the viewing window is openon the viewing monitor 180. If there is available location data, themanagement console may be configured to allow that location data to bevisualized on the viewing monitor 180. Among other potentialvisualization options:

-   -   One or more GIS viewing applications 176 may be engaged to        display the available location data, with the ability for the        management console operate to flag each camera's location and        manipulate the display format to show any mix of available        location data (e.g., show just the longitude and latitude, or        show the longitude and latitude with altitude and heading etc.)    -   The viewing window may manually or automatically be opened on        top of its available location data in order to better visualize        how the live video stream appears against the underlying fixed        imagery, such as a satellite or aerial photo or other available        display from a GIS viewing application 176. FIG. 11 illustrates        a screen shot of a viewing monitor 180 showing a viewing window        of a fixed camera in Paris, France placed on top of the same        intersection that the fixed camera 6 is viewing. In an        alternative embodiment, the desktop application 20 may        incorporate image analysis tools to analyze the incoming image        stream from the fixed camera 6, analyze the underlying fixed        imagery, and cause the viewing window to be placed at one or        more particular places on the viewing monitor 180, such as the        place in the underlying satellite imagery that most closely        matches the view being streamed from the fixed camera 6.    -   Each viewing window may incorporate its own user-controllable        GIS viewing application 176, allowing the console operator to        view a plurality of viewing windows simultaneously, each with        its own visualized location data. FIG. 12 illustrates a screen        shot of a viewing monitor 180 showing a viewing window of a        client device capturing a moving police car in Herndon, Va.,        where the console operator has elected to view a separate map        showing the car's available location.

In addition, as described further below and according to an embodimentof the present invention, the command center operator may haveadditional options to analyze and distribute the live imageryoriginating from any fixed camera 6, including, for example, the abilityto connect to and cause one or more client devices to display the liveimagery. Alternatively and/or additionally, the command center may beconfigured to capture and distribute to any client device any individualimage frame, or collection of image frames, shown on the viewing window.

C. Transparency Controls

The command center operator has other viewing options as well whendisplaying a live image stream from a fixed camera 6 according to anexemplary embodiment. For example, a viewing window may have variabletransparency for enhanced viewing of and overlaying with the underlyingfixed imagery.

For example, the viewing window may employ a control such as a slidecontrol that causes the viewing window to be rendered transparent indegrees as the control is moved one way and to be returned to itsoriginal transparency, including opaque, as the slide control is movedanother way. When the streamed live images are displayed with somedegree of transparency, the underlying fixed image may be seen beneaththe live streamed images.

D. PTZ Controls

As with the client devices mentioned earlier, the command centeroperator may remotely access any available PTZ controls for a fixedcamera 6 to the extent that the relevant information is contained incamera catalog 115. The viewing window may employ a control—such as amenu item, buttons or other prompts—to display the available PTZ optionsand allow the command center operator to exercise them.

E. Mobile User Monitoring Function

In one embodiment, each time the desktop application 20 is launched, themanagement console may automatically poll the command center server 12and present a list of all the client devices that have previouslyregistered with the system 100.

The available information for each client device may be displayed on themanagement console in various ways, such as, for example, by displayingeach client device as a separate row in a user table. The user table isan exemplary interface that may allow a command center operator tointeract with each client device.

The user table may also include one or more configurable columnsdisplaying the status of each client device in the system 100, such as,for example, a transmit column, a watch column, a panic column, atracking column, and one or more types of check-in status columns. Asdescribed further below, the information contained in the user table foreach client device may be derived primarily from the last known table 96in accordance with one embodiment. In addition, the management consolemay be configured to interface with the last known table 96 atdesignated time intervals in order to update the information containedin the user table.

The transmit column may indicate whether the transmit function 58 isengaged on the client device.

The watch column may indicate whether the watch function 59 view mode isengaged on a client device. In one embodiment, the command centeroperator may then select that client device to determine specificallywhat fixed camera 6 or other client device is originating the imagestream being viewed through the watch function 59.

The panic column may indicate whether the panic function 59 view mode isengaged on the client device. As noted earlier, launching the panicfunction 59 may cause the client device to execute or perform thetransmit function 58, which may, in turn, provide an indication on theuser table.

The location column may indicate whether the client device istransmitting location data to the command center server 12 (which, asnoted earlier, may be accomplished through the location subfunction inthe configuration function 55 in one embodiment).

The tracking column may allow the command center operator to select oneor more client devices to be tracked on one or more GIS viewingapplications 176 whenever those devices are transmitting their locationdata. For example, an operator may select two client devices fortracking that have not communicated with the check-in service 110 forthe last 24 hours. In one embodiment, as soon as either or both of theclient devices establish a connection to the check-in service 110 andbegin transmitting their respective location data, the applicable GISviewing application 176 may automatically orient itself to show thedevice location(s).

The check-in status columns may provide various status reports about aparticular client device, such as whether the client device is thencommunicating with the check-in service 110 or the period of time thathas elapsed since the device last communicated with the check-in service110, and so on.

In an exemplary embodiment, the management console may also includevarious filtering and sorting options, including, for example, theability to filter by status or keyword, to sort by clicking on a columnheader, or to group by a particular field.

In addition, those skilled in the art will recognize that any number ofadditional or different methods and user interfaces can be incorporatedinto the management console to organize and highlight particularinformation to a command center operator. By way of example, variousindicators, such as pop-up windows, audio prompts, different colorschemes etc. may be incorporated into the management console to, forexample, alert the console operator that a particular client device hasundertaken a particular action (e.g. provide a notification as soon as“X” client device engages its transmit function 58) or has failed toundertake a particular action, etc. (e.g., provide a notification if “X”client device has not communicated with the check-in service 110 withina designated period of time).

F. Client Viewing Options

When the transmit function 58 is engaged on one or more client devices,the command center operator may employ various methods to view the liveimage streams. In one embodiment, the command center operator maymanually select the particular client device or devices for immediateviewing or the management console may be configured so that viewingmonitor 180 automatically displays the live video streams as soon as thetransmit function is engaged.

As described further below, in an exemplary embodiment, the desktopapplication 20 may access the live image stream as it is beingtransmitted from the client device and stored temporarily in the imagebuffer 87 (as shown on the preceding FIG. 3C) on the command centerserver 12, open a viewing window on the viewing monitor 180, and displaythe live image stream in the viewing window. As noted earlier in thecase of a live image stream from a fixed camera 6, and as described ingreater detail below, a separate image buffer embedded in the viewingwindow may record the live image stream from the client device and allowthe command center operator to exercise various playback anddistribution functions according to an embodiment of the presentinvention.

In addition, if the client device is also transmitting location data,the command center operator may cause the desktop application 20 toretrieve the coordinates from the last known table 96 and display thosecoordinates on the integrated GIS viewing application(s) 176. Inaddition, the desktop application 20 may cause the GIS viewingapplication(s) 176 to reorient themselves as those coordinates areupdated in the last known table 96 during each subsequent communicationbetween the client device and the command center server 12. Thus, if aclient device is streaming live imagery from a moving car, for example,the viewing monitor 180 may show the underlying fixed imagery moving insync with the vehicle's ongoing route with an icon showing the locationof the client device as the location changes. As described further belowand in one exemplary embodiment, the command center operator may alsoretrieve an archived image stream and display on the viewing monitor 180how the client device's physical position changed during the course ofcapturing and transmitting that archived image stream.

Further, if there is available location data for two or more clientdevices, the desktop application 20 may cause the GIS viewingapplication(s) 176 to display a separate location icon representing eachselected client device. Based on the information provided to it by thedesktop application 20, the GIS viewing application(s) 176 may computeand zoom to an altitude sufficient to display an area that includes allthe location icons representing the selected client devices on theviewing monitor 180. The GIS viewing application display may bereoriented by the desktop application 20 as the available location datafor those client devices is updated in the last known table 96.

IV. Messaging and Routing Method

A. Data Communication Methods

In one embodiment, the system 100 allows a command center operator orany client device to send messages, commands and other data files (allsuch communications being referred to generally as data communications)to and among client devices. As described further below, any number ofdata communications may be issued with respect to, among other things,the delivery of one or more data files to a client device, the retrievalof one or more data files from a client device or the remote control ofthe functionality of a client device.

In another embodiment, the command center PC 22 may also establish itsown connection to the check-in service 110 and thus be treated asanother client device in the system 100 for the purpose of transmittingand receiving data communications. As such, the command center PC 22 andany client device may establish a two-way communication channel in thesystem 100, including, for example, the ability to send text messagesand other data to each other as described further below.

Set forth below for illustrative purposes are examples of some of thetypes of data communications that may be issued in the system 100. Asfurther described below, each type of data communication may have aparticular number assigned to it for easier processing in the system100. In an exemplary embodiment, the data communications may be issuedfrom a command center PC 22 or by using the client device commandfunction 62 or a related function on the client device. In either case,as noted earlier and as illustrated by the preceding FIG. 5D, the datacommunication may be routed first to the message delivery service 111based on the device ID of each selected client device, and then to themessage queue 98 to await the next check-in with check-in service 110 bythe selected devices. In one embodiment, the message queue 98 may beconfigured in different ways to manage the stored data communications,including, for example, the ability to allow a pending datacommunication to be recalled by its sender prior to the next check-inwith the check-in service 110 or to be deleted automatically if the nextcheck-in does not occur within a designated period of time.

As one of ordinary skill in the art may appreciate, the exact steps forinitiating a data communication may vary depending on whether a commandcenter PC 22 or a client device is issuing the command, allowing for,among other things, variations in the functionality of the underlyingcomputing platform.

As with other aspects of the system 100, the user may use variousmethods to access the command functionality, including, for example, theuse of drop-down menus, right-click menus, prompts and other methodsavailable on the particular computing platform that is initiating thecommand. In another embodiment, the user may select one or moreindividual client devices, or a predetermined group of client devices,to receive a command simultaneously from the command center server 12.In a further embodiment, if a viewing window is open on a command centerPC 22 or a client device, the user may access menu options embedded inthe viewing window. In a further embodiment, a user may schedule acommand to be executed at a designated future time.

In addition, the command center PC 22 (or the command function 62 on theclient device) may be configured to allow a command to be accompanied byany number of optional separate notifications to the target clientdevice. Depending on the functionality of the client device, forexample, a command, such as a “distribute file” command referencedbelow, may be accompanied by a notification causing the client device tovibrate, to create an audible sound, to display a prompt etc. A commandmay also be accompanied by associated data, such as the identity of thesender and the date and time the sender initiated the delivery.

As also noted earlier, system 100 may include various access controls toregulate when, and under what circumstances, any party to the system 100may exercise command and control functionality, and the system 100 isalso designed to allow an organization to establish its own policyprocedures to govern how a particular data communication may be issuedby a command center operator or any client device.

1. Message Command

In one embodiment, a user may select a “message” command to send a textmessage within the system 100. Once the command has been selected, theuser may, in one implementation of a user interface, be prompted firstto input the text message (which may, among other potential variations,include inputting new text, retrieving a previous text message orselecting a prerecorded message), and then to select one or more clientdevices from a list of available devices.

Once the “message” command has been retrieved by a selected clientdevice during its next check-in service 110, the text message may appearon the client device display screen without interrupting any otherapplication that might then be running on the client device. Forexample, if the text message is sent while the client device isstreaming live imagery to a command center server 12, the message may bedisplayed on the client device display screen without interrupting thatimage stream.

In one embodiment, the target client device may then use the commandfunction 62 to respond to the incoming text message or to forward it(and any additional text message) to one or more other client devices.

2. Distribute File Command

In one embodiment, a user may select a “distribute file” command todistribute one or more data files within the system 100. By way ofexample, the data file may be an image file, an audio file (such as anaudio file created by the user of a client device), a softwareapplication, or other type of file that the client device is nativelycapable of processing. Once the command has been selected, the user may,in one implementation of a user interface, be prompted first to selectone or more data files and then to select one or more client devicesfrom a list of available devices. As with the upload function 61, a datafile may originate from numerous sources, including, for example, theclient device itself (hard drive, flash drive, disc, DVD-ROM, etc.), orfrom another data collection source that is communicatively coupled tothe client device, or from separate media such as a compact flash, SDcard etc.

In one embodiment, once the file command is retrieved by the clientdevice during the next check-in service 110, the client device mayprocess the data file using a Web browser or other application availableon the client device as follows:

-   -   If the data file is something the Web browser may natively        handle, such as an image or an HTML file, the Web browser may be        opened to retrieve and view the data file on the client device        display screen.    -   If the file is something the Web browser cannot natively handle,        such as a vCard or a software application, the client device may        prompt its user to download the data file onto the client        device. It may then be left to the client device operating        system to process the file depending on the file type.

3. Camera On Command

In one embodiment, a user may select a “camera on” command to remotelycause a client device to engage its transmit function 58 and commencestreaming live imagery to the command center server 12 without userintervention at the remote device. Once the command has been selected,the user may, in one implementation of a user interface, be promptedsimply to select one or more remote client devices from a list ofavailable devices.

According to one embodiment, once the “camera on” command is retrievedby the remote client device during the next check-in service 110, theclient device may launch the transmit function 58 and commence streamingthe live imagery to the extent, as noted earlier, that there is anavailable internal or external camera on the device.

4. Camera Off Command

In one embodiment, a user may select a “camera off” command to remotelycause a client device to terminate its transmit function 58 and ceasestreaming live imagery to the command center server 12 without userintervention at the remote device. As with the “camera on” command, oncethe “camera off” command has been selected, the user may, in oneimplementation of a user interface, be prompted simply to select one ormore remote client devices from a list of available devices.

Once the “camera off” command is retrieved by the client device duringthe next check-in service 110, the client device may automaticallyterminate the transmit function 58.

5. Phone Call Command

In one embodiment, a user may select a “phone call” command to remotelycause a client device to initiate a telephone call without userinvention at the remote device to the extent the target client devicehas available an internal or external phone functionality. The phonenumber may include, for example, a conference call bridge number,together with any applicable authorization codes or passwords, so thatmultiple callers may be connected automatically with each other. Oncethe command has been selected, the user may, in one implementation of auser interface, be prompted first to enter the phone number (including,for example, any additional numbers necessary to access a conferencecall bridge number) and then to select one or more remote client devicesfrom a list of available devices.

Once the command is retrieved by the remote client device during thenext check-in service 110, the client device may establish a wirelessconnection, dial the phone number and, among other potential variations,go into speaker phone mode.

6. Switch Users Command

In one embodiment, a user may select a “switch users” command toremotely cause a client device to engage its watch mode 59 viewing modeto display a live image stream from a designated fixed camera 6, anotherclient device or another source. Once the command has been selected, theuser may be prompted first to select the camera for viewing (this stepmay occur automatically if the user exercises this command from aviewing window that is then viewing the same camera), and then to selectone or more remote client devices from a list of available devices.

Once the command is retrieved by the remote client device during thenext check-in service 110, the client device may launch the watchfunction 59 viewing mode and display the live imagery from thedesignated camera.

7. Status Command

As noted earlier, a client device may be configured to deliver certaindesignated information at certain intervals to the check-in service 110,such as, for example, battery level, available broadband networks,signal strength, etc. In addition, a user may select a “status” commandto remotely cause a client device to report additional, different, orthe same information about the client device or about any other devicethat may be communicatively coupled with the client device. According toone implementation of a user interface, once the command has beenselected, the user may be prompted to select one or more remote clientdevices from a list of available devices.

Once the command is retrieved by the remote client device during thenext check-in service 110, the client device may, in one embodiment,report the requested information back to the check-in service 110 forprocessing within the system 100.

8. Kill Pill Command

In one embodiment, the client software installed on a client device mayinclude a “kill pill” function that, when triggered, may cause all ofthe data on the client device to be deleted and the device to berestored to its original factory settings. For example, a “kill pill”may be used as a precaution in the event a client device is lost, stolenor otherwise compromised.

In another embodiment, a user may select a “kill pill” command toremotely cause the kill pill function to be triggered on a clientdevice. Once the command has been selected, the user may, in oneimplementation of a user interface, be prompted to select one or moreremote client devices from a list of available devices.

Once the command is retrieved by the client remote device during thenext check-in service 110, the client device may automatically triggerthe kill pill functionality on the client software. In anotherembodiment, the kill pill command may be sent to the client device viaanother method that does not require the client device to be checkingin, such as through the use of short messaging service (SMS). SMS is atechnology well known to those of ordinary skill in the art and is notdescribed further.

Other embodiments may combine the functionality of two or more commands,such as the message command and the live viewing command, into a singlecommand.

B. Summary of Messaging and Routing

FIGS. 8A-8B illustrate a flow diagram showing a method 700 by which datacommunications are routed to, from and among client devices in thesystem 100 according to an embodiment of the present invention. As shownin FIGS. 8A-8B, method 700 begins in step 704 by determining whether aclient device is in on-duty mode.

If the client is in on-duty mode (“yes” path from step 704), method 700may proceed to step 706. If the client is not in on-duty mode (“no” pathfrom step 704), the user of the client device may in step 708 launch theconfiguration function 55 and in step 710 select the displayed option toplace the client device in on-duty mode. Once the client device is inon-duty mode (“yes” path from step 710), method 700 may proceed to step706.

In step 706, method 700 may determine whether the client device has anopen TCP/IP connection with a network allowing the client device totransmit and receive data. TCP/IP is a term well known to those ofordinary skill in the art of the present invention and is not describedfurther in the interest of brevity. Alternatively, any other suitabledata communication protocol may be used. If the client device has anopen TCP/IP connection with a network (“yes” path from step 706), method700 in step 712 may report an internal state of “ready” on the clientdevice and, as described further below, attempt to initiate a networkconnection to the check-in service 110 (step 722). If the client devicedoes not have an open TCP/IP connection with a network (“no” path fromstep 706), method 700 may proceed to assess whether the conditions arepresent to establish a network connection. Those skilled in the art willrecognize that these conditions may vary depending on the specificclient device. For example, different conditions may apply if the clientdevice relies on a wired network 8 or a wireless network 4 and, if thelatter, whether the client device relies on a commercial cellularnetwork for wireless coverage as opposed to a Wi-Fi® wireless local areanetwork or if the client device is configured with multiple types of RFcircuitry 42. Thus, the following discussion of steps 714-722 isintended to provide illustrative examples of the conditions that may beassessed by method 700, according to one embodiment.

For example, in step 714 (“no” path from step 706), method 700 maydetermine whether the applicable RF circuitry 42 on the client devicehas been turned on. If the answer is no (“no” path from step 714),method 700 in step 716 may report an internal state of “not ready” onthe client device. As described further below, for a designated periodof time method 700 may stop attempting to initiate a network connectionto the check-in service 110. According to one embodiment, the designatedperiod of time between attempts may be the check-in time interval. Asnoted earlier, for example, the configuration function 55 may beconfigured with a check-in time interval of 15 seconds or some shorteror longer timeframe depending on an organization's specificrequirements.

If the RF circuitry 42 on the client device is on (“yes” path from step714), method 700 may determine in step 718 whether there is an activevoice call taking place on the client device temporarily preventing theclient device from establishing a TCP/IP connection. If the answer isyes (“yes” path from step 718), method 700 in step 716 may report aninternal state of “not ready” on the client device. If the answer is no(“no” path from step 718), method 700 in step 720 may determine whetherthere is currently data coverage available via the applicable wirelessnetwork 4 or wired network 8. For example, if the client device isattempting to communicate via a commercial cellular network, method 700in step 720 may determine whether the applicable wireless carrier's datanetwork is available.

If data coverage is not available (“no” path from step 720), method 700in step 716 may report an internal state of “not ready” on the clientdevice. If data coverage is available (“yes” path from step 720), method700 may attempt in step 722 to open a TCP/IP connection with theapplicable data network. If that attempt fails (“no” path from step722), method 700 in step 716 may report an internal state of “not ready”on the client device. If that attempt is successful (“yes” path fromstep 722), method 700 in step 712 may report an internal state of“ready” on the client device.

In one implementation of step 712, in each instance in which method 700reports an internal state of “ready,” the client device may attempt toinitiate a network connection to the check-in service 110 (step 722) onits assigned command center server 12. Method 700 may then determine instep 726 whether that attempt is successful. If the answer is yes (“yes”path from step 726), method 700 may proceed to step 728, as describedfurther below. If the answer is no (“no” path from step 726), method 700in step 716 may report an internal state of “not ready” on the clientdevice.

In step 726, once a successful connection has occurred to the check-inservice 110, the client device may report its device ID and otherdesignated information to the check-in service 110 (Step 728). Theclient device may then report its status to the check-in service 110(Step 730), such as whether it is currently engaged in a specifiedactivity. For example:

-   -   If, as shown in step 732, the transmit function 58 is engaged on        the client device, the check-in service 110 may in step 734        route that reported status to a specific entry for the device in        both the last known table 96 and the position log 95.    -   If, as shown in step 736, the watch function 59 is engaged on        the client device, the check-in service 110 may in step 738        route that reported status to a specific (and different) entry        for the device in both the last known table 96 and the position        log 95.    -   If, as shown in step 740, the panic function 57 is engaged on        the client device 2 (and the corresponding transmit function 58,        as described earlier), the check-in service 110 may in step 742        route that reported status to two separate entries (that is, one        for the panic function and one for the transmit function) for        the device both in the last known table 96 and in the position        log 95.

In addition, according to one embodiment illustrated in FIGS. 8A and 8B,the client device 2 may in step 744 report its location data, such asits geospatial coordinates available from the location subfunction ofthe configuration function 55. As noted earlier, the reported locationdata may be received in multiple ways, including by the check-in service110 or the transmit function 58, and routed to specific entries for thedevice in the last known table 96 and the position log 95.

Referring now to FIG. 813, the client device may then in step 746request all pending data communications from the check-in service 110.As described earlier and according to one embodiment of the presentinvention, these data communications may have been originated by acommand center PC 22 or by another client device, and may be storedtemporarily in the message queue 98 until they are retrieved by thecheck-in service 110 and delivered to the applicable client device.According to one embodiment, the data communications may be delivered tothe client device in the order in which they first arrived in themessage queue 98 or based on some other hierarchical ordering. By way ofillustration, the command center server 12 may be configured, forexample, so that the kill pill command (as described earlier) takespriority over all other pending data communication according to oneembodiment.

According to one embodiment, each type of data communication in thesystem 100 may have its own numeric message status for identificationpurposes, and the check-in service 110 may report the existence of aparticular data communication to the client device by identifying itsnumeric message status and by delivering any associated data necessaryfor the client device to execute that pending data communication.

Set forth below for illustrative purposes are examples of some of thenumeric designations that may be assigned to some of the different typesof data communications that may be issued in the system 100. As one ofordinary skill in the art will appreciate, actual nomenclature andnumeric designations may vary in the system 100.

If, as shown in step 750, the message status=0, that may in step 752(“yes” path from step 750) inform the client device that there are nopending data communications.

If, as shown in step 754, the message status=], that may in step 756(“yes” path from step 754) inform the client device to execute the“message” command described earlier.

If, as shown in step 758, the message status=2, that may in step 760(“yes” path from step 758) inform the client device to execute the“distribute file” command described earlier.

If, as shown in step 762, the message status=3, that may in step 764(“yes” path from step 762) inform the client device to execute the“camera on” command described earlier.

If, as shown in step 766, the message status=4, that may in step 768(“yes” path from step 766) inform the client device to execute the“camera off” command described earlier.

If, as shown in step 770, the message status=5, that may in step 772(“yes” path from step 770) inform the client device to execute the“phone call” command.

If, as shown in step 774, the message status=6, that may in step 776(“yes” path from step 774) inform the client device to execute the“switch users” command described earlier.

If, as shown in step 778, the message status=7, that may in step 780(“yes” path from step 778) inform the client device to execute the“status” command described earlier.

If, as shown in step 782, the message status=8, that may in step 784(“yes” path from step 782) inform the client device to execute the “killpill” command described earlier.

After the client device has received all of the pending datacommunications from the check-in service 110, it may in step 790terminate the network connection to the check-in service 110, and theconfiguration function 55 may reset its internal timer for the nextcheck-in time internal. This check-in, message-command retrieval cyclemay repeat itself (step 792) until the client device is no longer inon-duty mode.

In the embodiment illustrated, after the client device has completedstep 790, it may in step 794 proceed to execute each of the datacommunications received from the check-in service 110, for example, inthe order in which they were delivered to it or based on some otherhierarchical ordering.

In an alternate embodiment, the user of the client device may firstreceive a notification as to the number and nature of the datacommunications that have been delivered to the client device and begiven the choice as to whether and to what extent the user wishes toallow those data communications to be executed on the client device.

V. Viewing and Distributing Data Files

A. Live Video Streams

As described further below, the command center operator and each user ofa client device may have any number of options available to view anddistribute live video streams. As with other aspects of the system 100,the precise scope of the options, and the manner in which options may beexercised, may vary depending on the functionality of the underlyingcomputing platform and other variables.

1. Image Buffer

As noted earlier, the command center PC 22, and one or more clientdevices may open one or more separate viewing windows to display a livevideo stream from any fixed camera 6, any client device or otherpotential sources. In an exemplary embodiment, each viewing window mayhave a separate image buffer, which temporarily stores the live imagestream as it is being received and gives the user multiple options toview, analyze and distribute the recorded image frames. As notedearlier, if a client device does not support separate viewing windows,the watch function 59 viewing mode (or another component of the clientsoftware) may incorporate its own separate image buffer.

FIG. 9 illustrates a flow diagram summarizing a method 800 by which aviewing window may receive a live image stream in the system 100according to one embodiment. The image buffer functionality in method800 may work in substantially the same manner whether the user isviewing a live image stream from a fixed camera 6 or a client device,but the process by which a viewing window receives the live image streammay vary depending on the source of the incoming image. For illustrativepurposes, method 800 assumes that the client device supports a separateviewing window, but the method 800 may work in substantially the samemanner if the image buffer functionality is otherwise incorporated intothe client software as discussed earlier.

As shown in FIG. 9, method 800 may begin with the user of a commandcenter PC 22 or a client device. Using any of the available selectionmethods previously described, the user may select one or more availablefixed camera 6 or client devices (or other potential sources) for liveviewing (Step 802).

If, in step 804, the user has selected a fixed camera 6 for viewing,then in step 806, the desktop application 20 (if the user is using acommand center PC) or the watch function 59 viewing mode (if the user isusing a client device) may, as noted earlier and according to oneembodiment, compute the URL for the selected fixed camera 6, and in step808 open an IP connection to that fixed camera 6 (or to any interveningcommand center server 12 proxy server incorporated into the system 100)to retrieve the live image stream. The incoming image live stream maythen, in step 810, be received by, and temporarily stored in, a separateimage buffer maintained in memory on the user's applicable commandcenter PC 22 or client device. The image stream may be stored in thelocal image buffer on a frame-by-frame basis. In step 812 a separateviewing window may be opened as well to display the live image streamstored in that local image buffer.

If the user has instead selected a client device for viewing (step 820in method 800), method 800 may, as described earlier, retrieve thedevice's live image stream from the command center server 12 imagebuffer 87 to which the live imagery is being sent. In that case, thedesktop application 20 (if the user is using a command center PC) or thewatch function 59 viewing mode (if the user is using a client device)may, as noted earlier and according to one embodiment, proceed in step822 to compute the IP address of the relevant image buffer 87 based onthe device ID of the transmitting client device and on the IP address ofthe corresponding command center server 12. With that computation,method 800 may in step 824 retrieve the image frames by (in step 826)establishing a connection to the relevant image buffer 87 and then instep 828 temporarily storing the retrieved frames in a separate imagebuffer maintained in memory on the user's applicable command center PC22 or client device. The image stream may be stored in the local imagebuffer on a frame-by-frame basis in one embodiment. In step 830 aseparate viewing window may be opened as well to display the live imagestream stored in that local image buffer.

According to one embodiment, the user may open and view simultaneouslymultiple viewing windows, each of which may display a different liveimage stream, each being buffered in a separate local image buffer. Asone of ordinary skill in the art will appreciate, design tradeoffs mayestablish a limit on the number of image frames that may be stored in alocal image buffer at any one time, depending on the available memory onthe command center PC 22 or client device and on other resourceconstraints. In one embodiment, a configurable storage limit may be setper image buffer, such as, by way of example, a storage limit of 3000frames. As noted earlier, the image buffering process is known to thoseof ordinary skill in the art of the present invention, and is notdescribed in greater detail in the interest of brevity.

2. Playback Controls

According to one embodiment, as the user is viewing the live imagestream on the viewing window, the user may exercise various playbackcontrols with respect to the image frames being stored in the embeddedlocal image buffer, including the ability to pause, rewind andfast-forward through the locally stored image frames. For example, inone implementation of a user interface, the command center operator mayuse various methods to pause the image display, such as by the use of adesignated “play/pause” button, a menu item, a slide control etc.

At that point, according to one implementation, the viewing window maydisplay a single image frame (that image frame being referred togenerally as a paused image frame) and the embedded local image buffermay continue to store the incoming video stream from the applicablefixed camera 6 or client device. According to one embodiment, theembedded image buffer may continue to store the incoming video streamuntil the viewing window is closed by the user or, if earlier, theembedded image buffer has reached a predetermined storage limit, asdescribed previously.

If the user then selects the “play/pause” button a second time, theviewing window may display the live image stream from the point at whichthe pause first occurred, according to one embodiment. For example, ifthe command center operator is watching a live image stream and selectsthe pause button at a point where there are 50 image frames stored inthe embedded image buffer and then selects the pause button a secondtime at a point where there are 200 image frames stored in the embeddedimage buffer, the viewing window may display the image stream from the51^(st) image frame, not the 200^(th) frame. To display the live imagestream from the 200th frame (or whatever is then the most current imageframe being transmitted by the applicable camera), the user may, in oneembodiment, use various methods to do so, such as by the use of adesignated button, menu item, slide control etc.

Comparable controls may be used to exercise any number of otheravailable playback controls as well, such as rewinding orfast-forwarding at varying speeds, according to one embodiment.

3. Distribution Controls

According to one embodiment, the user may also exercise variousdistribution options as well from the viewing window, including, amongother potential options, the ability to distribute inside or outside thesystem 100 any one or more image frames being stored in the embeddedlocal image buffer.

(a) Paused Image Frames.

In one illustrative implementation, if the user has paused an imagestream on the viewing window, as noted above, the user may choose anynumber of menu items, user prompts or other methods to distribute thatpaused image inside or outside the system 100. Several examples of someof the types of distribution options that may be incorporated into thesystem 100 are described in detail below.

First, the user may distribute the paused image directly to one or moreclient devices. This option is one variation of the “distribute file”command mentioned earlier and functions in essentially the same fashionin the system 100, according to one embodiment. In one embodiment, thepaused image frame is pre-selected as the desired data file to bedistributed, and the user is then prompted to select one or more clientdevices to receive it. At that point, the “distribute file” command isrouted to the message delivery service 111 to await the next connectionto the check-in service 110 of the selected client device(s). When thatnext connection to the check-in service 110 occurs and the “distributefile” command is retrieved by a selected client device, the clientdevice may implement the “distribute file” command by opening thedevice's Web browser and displaying the paused image frame on thedisplay screen 33.

Second, the user may save the paused image frame to a file system. Inone embodiment, the image frame may be assigned an initial file nameautomatically by the desktop application 20 (if the user is using thecommand center PC 22) or the client software (if the user is using aclient device) and may be saved in the same or a different file format.After naming, the typical operating system procedures otherwiseavailable on the applicable device, such as Windows XP® procedures, maycontrol the completion of the saving process.

Third, the user may email the paused image. In one embodiment, the imageframe may likewise be assigned an initial file name by the applicabledesktop application 20 or client software, and the named file may appearautomatically in an email attachment box. After naming, conventionalemail procedures, such as Microsoft Outlook™ procedures, may control thecompletion and distribution of the email.

Fourth, the user may copy the image to a temporary file (e.g., the“clipboard”), such as a Windows clipboard file, for subsequent retrievalby pasting or attaching to any application that supports the clipboard,such as an image annotation software or a word processing software.

(b) Video Clip

In another illustrative implementation, the user may select a range offrames contained in the local image buffer (i.e. a video clip) anddistribute that video clip inside or outside the system 100 insubstantially the same manner as a paused image frame. In oneembodiment, the user may use any of the available controls on theviewing window to first identify the first frame in the local imagebuffer the user wishes to include in the clip, then commence a recordingfunction (such as, for example, through the use of a “record” button orother control) and then cease the recording at the last frame the userwishes to include in the clip (such as, for example, by selecting a“record” button or other control). At that point, the user may exerciseany of the available distribution options in the system 100, including,as noted above, the ability to distribute the clip to one or more clientdevices, to save the clip to a file system, to email the clip etc.

B. Archived Data Files

As noted earlier, data files introduced into the system 100 may bestored in different ways on one or more command center servers 12 (or onone or more intervening command center servers 12 or on one or moreavailable storage methods that are communicatively coupled to a commandcenter server 12 etc.) depending on their particular characteristics. Inthe case of live image streams from a fixed camera 6, a client device orother source, for example, the incoming data files may be routed by thecommand center server 12 image service 80 on a frame-by-frame (or otherbasis) to the frames database 97 in the database application 74 forarchiving and subsequent retrieval. As also noted earlier, associateddata files such as location data and sensor data may be embedded intothe archived image frames or stored separately in the system 100 butcataloged in a manner that permits the associated data to be retrievedautomatically when the corresponding image frames are retrieved.

Stored image files and other associated and/or independent data filesmay be displayed in the system 100 in various ways, and the commandcenter operator and each user of a client device may have any number ofoptions available to search for, view and distribute the stored datafiles. Set forth below for illustrative purposes is one example of auser interface that may be implemented in the system 100 with respect toimage frames stored in the frames database 97, according to oneembodiment. As with other aspects of the system 100, the precise scopeof the user interface, and the manner in which data files may beexercised, may vary depending on the functionality of the underlyingcomputing platform and other variables.

1. Searching the Frames Database

In one embodiment, a user may select any number of methods available ona command center PC 22 or client device (pull-down menus, right-clickmenus, buttons etc.) to initiate a search of the frames database 97. Asone of ordinary skill in the art will appreciate, any single searchparameter, or combination of parameters, may be applied to findparticular image frames in the frames database 97. Among other potentialimplementations, a user may be prompted to search by any one or more ofthe following parameters:

-   -   The identity of the source of the image frames (that is, the        fixed camera 6, the client device or other source that first        streamed the imagery)    -   Available location data (for example, by selecting a location on        a map and requesting all image frames located within a certain        distance of that location)    -   Date and/or time.    -   Priority tagging created by the sender (as noted earlier in the        discussion of the transmit function 58).    -   Prior notations created by a user, such as labeling or        bookmarking one or more archived image frames, as discussed        further below. The search function may incorporate various        additional filtering and sorting options as well, including, for        example, the ability to further refine search results.

FIG. 10A is a schematic diagram of a data flow 935 illustrating onemethod by which a user may retrieve image frames (and the availableassociated data for those frames) from the frames database 97 afterlocating the frames with a search function, according to one embodiment.

As shown in the embodiment of FIG. 10A, the desktop application 20 (if acommand center PC 22 is initiating the search) or the archive function60 (if a client device is initiating the search) may in path 936communicate with the data service 90 via a wired network 8 or a wirelessnetwork 4 (or a combination of the two) to request the availablearchived image frames based on the designated search parameters.

In path 937, the data service 90 may retrieve the requested frames andassociated data from the frames database 97 or other source if, as notedearlier, the associated data is stored separately from, but otherwiseassociated with, designated image frames.

In path 938, the data service 90 may deliver the retrieved frames anddata to an archive viewer 902, which may store the frames and associateddata temporarily in memory on the user's applicable command center PC 22or client device. In path 939, the archive viewer 902 may display theframes and associated data on the user's display screen in variousformats, such as a table format 940, depending on the nature of thesearch results and other variables.

As noted earlier and according to one embodiment, the system 100 mayallow a configurable limit on the number of image frames that may bestored locally in memory on the command center PC or a client device,depending on the available memory and other resource constraints. Thesame may hold true for the number of archived image frames stored inassociation with the archive display format.

2. Image Display Format

As explained, a table format 940 may be one embodiment of a userinterface for displaying archived image frames. Among other potentialdisplay options, the table format 940 may include one or moreconfigurable columns displaying information about each availablearchived image frame produced by the search function, such as, forexample, one or more columns displaying:

-   -   Timestamps previously created by the system 100 for archived        image frames, including, for example, the time the frame was        first captured on the device and the time the frame was first        delivered to the command center server 12.    -   The client device, fixed camera 6 or other source that first        captured the image.    -   Available location data (longitude, latitude etc.) for that        image frame.    -   The archived image frames.    -   Other associated data, such as sensor data, available for an        image frame. As described earlier, the information contained in        table format 940 may be derived primarily from the last known        table 96.

3. Distribution Options

As noted earlier, when a user of a command center PC 22 or a clientdevice is viewing a live image stream in the system 100, any number ofdistribution options may be available to distribute any one or more ofthe incoming image frames inside or outside the system 100. In anexemplary embodiment, any one or more archived image frames displayed inthe table format 940 may be distributed inside or outside the system 100in substantially the same fashion. That is, as described earlier andamong other potential distribution options, any one or more image framesmay be:

-   -   Distributed directly to one or more client devices (this option,        as noted earlier, is one variation of the “distribute file”        command and functions in essentially the same fashion in the        system 100, according to one embodiment).    -   Saved to a file system.    -   Distributed by email.    -   Copied to a clipboard    -   Retrieved by third-party sources.

4. Displaying an Archived Image Stream

In addition to viewing still images, a user may also select any numberof image frames in the table format 940 for display as streaming video,such as an M-JPEG video stream.

In one implementation of a user interface for archive viewer 902, theuser may use any number of menu items or other controls to select anydiscrete frames or ranges(s) of frames from the table format 940 thatthe user wishes to include in the video steam. As described furtherbelow, a user may then select a “play” button or other control to open aviewing window and display the archived video stream, in one embodiment.

(a) The Archive Viewer

As noted earlier, when a user of a command center PC 22 or a clientdevice is viewing a live image stream in the system 100, the user mayopen and view simultaneously multiple viewing windows, each of which maydisplay a different video image stream, each being buffered in aseparate local image buffer. In an exemplary embodiment, a substantiallysimilar method may be used to view an archived video stream. As notedearlier, in an alternative embodiment, if a client device does notsupport separate viewing windows, the watch function 59 viewing mode (oranother component of the client software) may incorporate its ownseparate image buffer.

FIG. 10B is a diagram illustrating a data flow 960 by which a user mayretrieve an archived image stream and other associated data (as notedearlier) from the frames database 97 to display as streaming videothrough the archive viewer 902, according to one embodiment.

As illustrated by FIG. 10B, the archive viewer 902 may in path 961communicate with the archiving service 89 via a wired network 8 or awireless network 4 (or a combination of the two) to request designatedarchived image frames, as described previously.

The image service 89 may in path 962 retrieve from the frames database97 the available image frames, which frames may, as noted earlier, haveadditional data, such as location data, encoded into them or otherwisestored separately but associated with them.

The archiving service 89 may also in path 964 reformat the retrievedimage frames as a video stream, such as an M-JPEG video stream, androute that reformatted image stream to a separate image buffer 972maintained temporarily in memory on the user's applicable command centerPC 22 or client device. Path 961 may be used to send some associatedinformation to archive viewer 902.

In path 966, available location data (and other suitable data) may berouted by the archiving service 89 to one or more GIS applications 176that may be integrated into the archive viewer 902, according to oneembodiment.

If there is available location data, the archive viewer 902 may, asnoted earlier in the context of viewing live video streams, beconfigured in different ways to allow the user to visualize the locationdata, in one embodiment. Among other potential visualization options:

-   -   One or more GIS viewing applications 176 (as described earlier)        may be engaged to display the available location data.    -   The viewing window may manually or automatically be opened on        top of its available location data in order to better visualize        how the archived video stream appears against the underlying        fixed imagery, such as a satellite or aerial photo or other        available display from a GIS viewing application 176.    -   Each viewing window may incorporate its own user-controllable        GIS viewing application 176, allowing the user to view        simultaneously a plurality of viewing windows, each with its own        visualized location data.

In path 970, the archive viewer 902 may open a viewing window to displaythe image stream buffered in image buffer 972. In addition, if locationdata has been routed to a GIS application 176 (step 966), the archiveviewer 902 may, in one potential implementation, cause the GISapplication 176 to use numeric placemarkers or other indicators give adisplay of geographic context, such as a location on an aerial photo ormap, indicating the location from which archived video imagery wasoriginally transmitted to the command center server 12.

(b) Playback Controls

As with the displaying of a live image stream on a viewing window, theuser may exercise playback controls when viewing an archived imagestream on a viewing window, according to one embodiment. For example, inone exemplary user interface for archive viewer 902, the user may usevarious controls, such as a “play/pause” button, menu item, slidecontrol etc., to invoke the functionally described previously withrespect to the playback controls for viewing a live image stream.

(c) Distribution Controls

As with distributing an image frame from a live video feed describedpreviously, the user may exercise the same types of distributioncontrols when viewing an archived image stream on a viewing window,according to one embodiment. For example, in one exemplary userinterface for archive viewer 902, the use may pause an archived imagestream using a “play/pause” button or other control and distribute thepaused image frame inside or outside the system 100 in substantially thesame fashion, such as by distributing it directly to one or more clientdevices, saving it to a file system, distributing by email or copying toa clipboard.

In addition, the user may select a range of frames contained in thelocal image buffer (i.e. a video clip) and distribute that video clipinside or outside the system 100 in substantially the same manner as apaused image frame.

(d) Switch Users Command

Further, the user may cause one or more client devices to display thesame archived video stream created by that user, in one embodiment. Thisoption is one variation of the “switch users” command mentioned earlierand functions in essentially the same fashion. Once the command has beenselected, the user may, in one implementation of a user interface, beprompted to select one or more client devices from a list of availabledevices. Once the command is retrieved by a selected client deviceduring the next check-in service 110, the client device may launch thewatch function 59 viewing mode and display the archived stream.

VI. Populating the Camera Catalog

As noted earlier, camera catalog 115 for a command center server 12 maymaintain an entry for each fixed camera 6 that an organization wishes toincorporate into the system 100, according to one embodiment. As one ofordinary skill in the art may appreciate, camera catalog 115 may bepopulated in any number of ways within the scope of the invention. Forexample, if the organization already has that data available in someformat, such as a Microsoft Excel spreadsheet or some other applicationformat, that data may be imported into camera catalog 115. In addition,among other methods, the system 100 may have a separate Web-based methodto populate and update the information contained in camera catalog 115,according to one embodiment.

An exemplary embodiment of a user interface for such a Web-basedapplication may allow a user to select a control shown on the managementconsole, which may cause a Web page to open accessing the catalogingservice 82. The Web page may retrieve from the cataloging service 82 anddisplay a list of fixed cameras 6 currently maintained in camera catalog115. To change the information in camera catalog 115, the user (e.g.,command center operator or other authorized personnel) may, among otherpotential options and according to one embodiment:

-   -   Select a camera from the resulting list and edit its existing        data.    -   Select a different menu option to add a new fixed camera 6 and        to populate the relevant camera catalog 115 fields with the        available information for that camera, such as, for example, its        available location data, PTZ controls, etc. (all as described        earlier).    -   Select a different menu option to delete an existing fixed        camera 6.

It is contemplated that additional and/or different methods for how datais stored in camera catalog 115 may exist without departing from thescope of the present disclosure. For example, an organization may defineits own fields in the camera catalog and specific attributes associatedwith these fields.

VII. Third-Party Integration

According to one embodiment of the present invention, the serversoftware 14, the mobile client software, the desktop client software 3and other components of the system 100 may include their own respectiveapplication programming interfaces to allow for integration with avariety of third-party products and systems, such as, for example,existing third-party imagery databases, video surveillance tools andinfrastructures, third-party alerting and messaging systems, andartificial intelligence solutions, such as facial and object recognitionapplications.

VIII. Security and Exemplary Embodiments

As noted earlier, systems and methods consistent with the invention maybe designed to incorporate various security features, including accesscontrols, virtual private networks (VPNs) and other encryptiontechnologies, and user verification and authentication.

It is contemplated that various component and/or subsystems associatedwith the disclosed data acquisition and distribution system may beincluded as part of a separate system or may be integrated within one ormore other systems. For example, it is contemplated that the processesand/or systems associated with command center PC 22 may be implementedon one or more mobile client devices, designated to operate as thecommand center PC 22. Alternatively and/or additionally, although FIG.2A illustrates certain components as components external to mobileclient device 2 (e.g., RF external adapter and external GPS receiver),it is contemplated that these components may be integrated within mobileclient device 2, without departing from the scope of the presentdisclosure and the embodiments associated therewith.

Similarly, it is contemplated that various processes illustrated and/ordescribed as being associated with certain components and/or systems maybe associated with other components and/or systems. For instance, it iscontemplated that certain processes performed by command center PC 22may be performed by one or more client devices. Accordingly, it iscontemplated that any feature, process, and/or system associated withcommand center PC 22 may be associated with a client device. Thus, oneor more client devices may be designated as a command server forperforming the command and control processes associated with thedisclosed embodiments.

Furthermore, although certain components or systems may be described asbeing “mobile”, it is contemplated that this term may also refer tofixed devices that may be configured as “mobile” or “virtually mobile”devices. For example, throughout the disclosure, reference is made tomobile client devices. It is contemplated that this term may refer todesktop and/or network clients configured, with certain software such asmobile client software, to possess many of the same functionalities asthe mobile client device.

The present invention has been described with reference to certainexemplary embodiments thereof. However, it will be readily apparent tothose skilled in the art that it is possible to embody the invention inspecific forms other than that those of the exemplary embodimentsdescribed above. This may be done without departing from the spirit andscope of the invention. The exemplary embodiments described herein aremerely illustrative and should not be considered restrictive in any way.

1. One or more computer-readable nontransitory storage media embodyingsoftware that is operable when executed to: receive a selection of astreamable-data source, the streamable-data source being operable totransmit streamable data; receive streamable data from thestreamable-data source; receive a selection of one or more remote clientdevices to receive all or a portion of the streamable data; and based atleast in part on the selection of the streamable-data source and theselection of the one or more remote client devices, distribute or causeto be distributed all or a portion of the streamable data to one or moreof the remote client devices for use at one or more of the remote clientdevices.
 2. The media of claim 1, wherein the streamable data comprises:video; audio; position data specifying a position of the streamable-datasource; or metadata.
 3. The media of claim 1, wherein: the streamabledata comprises video frames; the streamable-data source comprises a livevideo source; and the streamable data is received in approximatereal-time.
 4. The media of claim 1, wherein the streamable-data sourcecomprises a still-picture camera or a video camera at a remote location.5. The media of claim 4, wherein the still-picture camera or the videocamera is operable to pan, tilt, or zoom.
 6. The media of claim 1,wherein the streamable-data source comprises a camera integrated with orcommunicatively coupled to a remote client device.
 7. The media of claim1, wherein one or more of the media are physically located within anonremote client device.
 8. The media of claim 7, wherein the nonremoteclient device comprises the streamable-data source.
 9. The media ofclaim 7, wherein the software is further operable when executed to makeavailable or cause to be made available at the nonremote client deviceall or a portion of the streamable data.
 10. The media of claim 1,wherein the streamable-data source comprises a streamable-data store ata central server communicatively coupled to the one or more of theremote client devices.
 11. The media of claim 1, wherein, to distributeor cause to be distributed all or a portion of the streamable data toone or more of the remote client devices, the software is operable whenexecuted to communicate a command to one or more of the remote clientdevices, the command being operable to cause each of one or more of theremote client devices to open a window for making available all or aportion of the streamable data at the remote client device automaticallyand without input from a user at the remote client device.
 12. The mediaof claim 11, wherein: the software is further operable to upload orcause to be uploaded all or a portion of the streamable data to acentral server for storage in a streamable-data store; and to distributeor cause to be distributed all or a portion of the streamable data toone or more of the remote client devices, the software is operable whenexecuted to communicate a command to one or more of the remote clientdevices, the command being operable to cause each of one or more of theremote client devices to: establish a connection with the centralserver; and retrieve all or a portion of the streamable data from thestreamable-data store.
 13. The media of claim 1, wherein: thestreamable-data source comprises a viewing window that overlies one ormore portions of one or more display elements on a display of anotherremote client device or a nonremote client device, the one or moreportions of the one or more display elements being viewable to a user atthe other remote client device or nonremote client device through theviewing window; and the streamable data comprises a video feed capturingthe one or more portions of one or more of the display elementsunderneath the viewing window.
 14. The media of claim 13, wherein theone or more portions of one or more of the display elements underneaththe viewing window appear, through the viewing window, to the user atthe other remote client device or nonremote client device as they wouldappear to one or more other users at one or more of the remote clientdevices upon being distributed to them.
 15. The media of claim 14,wherein, upon being distributed, the one or more portions of one or moreof the display elements underneath the viewing window appear to one ormore other users at one or more of the remote client devices with one ormore different ones of the portions of one or more different ones of thedisplay elements having different resolutions from their nativeresolutions at the other remote client device or nonremote clientdevice.
 16. The media of claim 13, wherein: the viewing window ismovable by the user at the other remote client device or nonremoteclient device with respect to the display elements to overlie one ormore other portions of one or more of the display elements; and thevideo feed captures the one or more other portions of one or more of thedisplay elements underneath the viewing window as it moves.
 17. Themedia of claim 16, wherein one or more of the display elements eachcomprise an application window.
 18. The media of claim 17, wherein oneor more of the application windows each comprise a web-browser window ora media-player window.
 19. The media of claim 13, wherein one or more ofthe display elements comprise one or more portions of a virtual desktopof the other remote client device or nonremote device.
 20. The media ofclaim 13, wherein one or more of the display elements each comprise anicon appearing on a virtual desktop of the other remote client device ornonremote device.
 21. A method comprising: receiving, by a nonremoteclient device, a selection of streamable-data source, thestreamable-data source being operable to transmit streamable data;receiving, by the nonremote client device, streamable data from thestreamable-data source; receiving, by the nonremote client device, aselection of one or more remote client devices to receive all or aportion of the streamable data; and based at least in part on theselection of the streamable-data source and the selection of the one ormore remote client devices, distributing or causing to be distributed,by the nonremote client device, all or a portion of the streamable datato one or more of the remote client devices for use at one or more theremote client devices.
 22. The method of claim 21, wherein the nonremoteclient device comprises the streamable-data source.
 23. The method ofclaim 21, wherein the streamable data comprises: video; audio; positiondata specifying a position of the streamable-data source; or metadata.24. The method of claim 21, wherein: the streamable data comprise videoframes; the streamable-data source comprises a live video source; andthe streamable data are received in approximate real-time.
 25. Themethod of claim 21, wherein the streamable-data source comprises astill-picture camera or a video camera at a remote location.
 26. Themethod of claim 25, wherein the still-picture camera or the video camerais operable to pan, tilt, or zoom.
 27. The method of claim 21, whereinthe streamable-data source comprises a camera integrated with orcommunicatively coupled to a remote client device.
 28. The method ofclaim 21, further comprising making available or causing to be madeavailable at the nonremote client device all or a portion of thestreamable data.
 29. The method of claim 21, wherein the streamable-datasource comprises a streamable-data store at a central servercommunicatively coupled to the one or more of the remote client devices.30. The method of claim 21, wherein distributing or causing to bedistributed all or a portion of the streamable data to one or more ofthe remote client devices comprises communicating a command to one ormore of the remote client devices, the command being operable to causeeach of one or more of the remote client devices to open a window formaking available all or a portion of the streamable data at the remoteclient device automatically and without input from a user at the remoteclient device.
 31. The method of claim 30, wherein: the method furthercomprises uploading or causing to be uploaded all or a portion of thestreamable data to a central server for storage in a streamable-datastore; and distributing or causing to be distributed all or a portion ofthe streamable data to one or more of the remote client devicescomprises communicating a command to one or more of the remote clientdevices, the command being operable to cause each of one or more of theremote client devices to: establish a connection with the centralserver; and retrieve all or a portion of the streamable data from thestreamable-data store.
 32. The method of claim 21, wherein: thestreamable-data source comprises a viewing window that overlies one ormore portions of one or more display elements on a display of anotherremote client device or a nonremote client device, the one or moreportions of the one or more display elements being viewable to a user atthe other remote client device or nonremote client device through theviewing window; and the streamable data comprises a video feed capturingthe one or more portions of one or more of the display elementsunderneath the viewing window.
 33. The method of claim 32, wherein theone or more portions of one or more of the display elements underneaththe viewing window appear through the viewing window to the user at theother remote client device or nonremote client device as they wouldappear to one or more other users at one or more of the remote clientdevices upon being distributed to them.
 34. The method of claim 33,wherein, upon being distributed, the one or more portions of one or moreof the display elements underneath the viewing window appear to one ormore other users at one or more of the remote client devices with one ormore different ones of the portions of one or more different ones of thedisplay elements having different resolutions from their nativeresolutions at the other remote client device or nonremote clientdevice.
 35. The method of claim 32, wherein: the viewing window ismovable by the user at the other remote client device or nonremoteclient device with respect to the display elements to overlie one ormore other portions of one or more of the display elements; and thevideo feed captures the one or more other portions of one or more of thedisplay elements underneath the viewing window as it moves.
 36. Themethod of claim 35, wherein one or more of the display elements eachcomprise an application window.
 37. The method of claim 36, wherein oneor more of the application windows each comprise a web-browser window ora media-player window.
 38. The method of claim 32, wherein one or moreof the display elements comprise one or more portions of a virtualdesktop of the other remote client device or nonremote device.
 39. Themethod of claim 32, wherein one or more of the display elements eachcomprise an icon appearing on a virtual desktop of the other remoteclient device or nonremote device.
 40. One or more computer-readablenontransitory storage media embodying software that, when executed, isoperable to: receive streamable data from one or more streamable-datasources; receive a first selection from a client application, the firstselection specifying a particular one of the streamable-data sources;receive a second selection from the client application, the secondselection specifying one or more remote client devices; and based atleast in part on the first and second selections, distribute or cause tobe distributed all or a portion of the streamable data from theparticular one of the streamable-data sources to one or more of theremote client devices for use at one or more of the remote clientdevices.
 41. The media of claim 40, wherein one or more of the media arephysically located within a central server.
 42. The media of claim 40,wherein the client application resides at a client device that comprisesthe particular one of the streamable-data sources.
 43. The media ofclaim 40, wherein the streamable data comprises: video; audio; positiondata specifying a position of the streamable-data source; or metadata.44. The media of claim 40, wherein: the streamable data comprise videoframes; the streamable-data source comprises a live video source; andthe streamable data are received in approximate real-time.
 45. The mediaof claim 40, wherein the streamable-data source comprises astill-picture camera or a video camera at a remote location.
 46. Themedia of claim 45, wherein the still-picture camera or the video camerais operable to pan, tilt, or zoom.
 47. The media of claim 40, whereinthe streamable-data source comprises a camera integrated with orcommunicatively coupled to a remote client device.
 48. The media ofclaim 40, wherein the client application resides at a remote clientdevice.
 49. The media of claim 40, wherein, to distribute or cause to bedistributed all or a portion of the streamable data to one or more ofthe remote client devices, the software is operable when executed tocommunicate a command to one or more of the remote client devices, thecommand being operable to cause each of one or more of the remote clientdevices to open a window for making available all or a portion of thestreamable data at the remote client device automatically and withoutinput from a user at the remote client device.
 50. The media of claim49, wherein: the software is further operable to upload or cause to beuploaded all or a portion of the streamable data to a central server forstorage in a streamable-data store; and to distribute or cause to bedistributed all or a portion of the streamable data to one or more ofthe remote client devices, the software is operable when executed tocommunicate a command to one or more of the remote client devices, thecommand being operable to cause each of one or more of the remote clientdevices to: establish a connection with the central server; and retrieveall or a portion of the streamable data from the streamable-data store.51. The media of claim 40, wherein: the streamable-data source comprisesa viewing window that overlies one or more portions of one or moredisplay elements on a display of another remote client device or anonremote client device, the one or more portions of the one or moredisplay elements being viewable to a user at the other remote clientdevice or nonremote client device through the viewing window; and thestreamable data comprises a video feed capturing the one or moreportions of one or more of the display elements underneath the viewingwindow.
 52. The media of claim 51, wherein the one or more portions ofone or more of the display elements underneath the viewing window appearthrough the viewing window to the user at the other remote client deviceor nonremote client device as they would appear to one or more otherusers at one or more of the remote client devices upon being distributedto them.
 53. The media of claim 52, wherein, upon being distributed, theone or more portions of one or more of the display elements underneaththe viewing window appear to one or more other users at one or more ofthe remote client devices with one or more different ones of theportions of one or more different ones of the display elements havingdifferent resolutions from their native resolutions at the other remoteclient device or nonremote client device.
 54. The media of claim 51,wherein: the viewing window is movable by the user at the other remoteclient device or nonremote client device with respect to the displayelements to overlie one or more other portions of one or more of thedisplay elements; and the video feed captures the one or more otherportions of one or more of the display elements underneath the viewingwindow as it moves.
 55. The media of claim 54, wherein one or more ofthe display elements each comprise an application window.
 56. The mediaof claim 55, wherein one or more of the application windows eachcomprise a web-browser window or a media-player window.
 57. The media ofclaim 51, wherein one or more of the display elements comprise one ormore portions of a virtual desktop of the other remote client device ornonremote device.
 58. The media of claim 51, wherein one or more of thedisplay elements each comprise an icon appearing on a virtual desktop ofthe other remote client device or nonremote device.
 59. A methodcomprising: receiving, by one or more central servers, streamable datafrom one or more streamable-data sources; receiving, by one or morecentral servers, a first selection from a client application, the firstselection specifying a particular one of the streamable-data sources;receiving, by one or more central servers, a second selection from theclient application, the second selection specifying one or more remoteclient devices; and based at least in part on the first and secondselections, distributing or causing to be distributing, by one or morecentral servers, all or a portion of the streamable data from theparticular one of the streamable-data sources to one or more of theremote client devices for use at one or more of the remote clientdevices.
 60. The method of claim 59, wherein the client applicationresides at a client device that comprises the particular one of thestreamable-data sources.
 61. The method of claim 59, wherein thestreamable data comprises: video; audio; position data specifying aposition of the streamable-data source; or metadata.
 62. The method ofclaim 59, wherein: the streamable data comprise video frames; thestreamable-data source comprises a live video source; and the streamabledata are received in approximate real-time.
 63. The method of claim 59,wherein the streamable-data source comprises a still-picture camera or avideo camera at a remote location.
 64. The method of claim 63, whereinthe still-picture camera or the video camera is operable to pan, tilt,or zoom.
 65. The method of claim 59, wherein the streamable-data sourcecomprises a camera integrated with or communicatively coupled to aremote client device.
 66. The method of claim 59, wherein the clientapplication resides at a remote client device.
 67. The method of claim59, wherein, to distribute or cause to be distributed all or a portionof the streamable data to one or more of the remote client devices, thesoftware is operable when executed to communicate a command to one ormore of the remote client devices, the command being operable to causeeach of one or more of the remote client devices to open a window formaking available all or a portion of the streamable data at the remoteclient device automatically and without input from a user at the remoteclient device.
 68. The method of claim 67, wherein: the software isfurther operable to upload or cause to be uploaded all or a portion ofthe streamable data to a central server for storage in a streamable-datastore; and to distribute or cause to be distributed all or a portion ofthe streamable data to one or more of the remote client devices, thesoftware is operable when executed to communicate a command to one ormore of the remote client devices, the command being operable to causeeach of one or more of the remote client devices to: establish aconnection with the central server; and retrieve all or a portion of thestreamable data from the streamable-data store.
 69. The method of claim59, wherein: the streamable-data source comprises a viewing window thatoverlies one or more portions of one or more display elements on adisplay of another remote client device or a nonremote client device,the one or more portions of the one or more display elements beingviewable to a user at the other remote client device or nonremote clientdevice through the viewing window; and the streamable data comprises avideo feed capturing the one or more portions of one or more of thedisplay elements underneath the viewing window.
 70. The method of claim69, wherein the one or more portions of one or more of the displayelements underneath the viewing window appear through the viewing windowto the user at the other remote client device or nonremote client deviceas they would appear to one or more other users at one or more of theremote client devices upon being distributed to them.
 71. The method ofclaim 70, wherein, upon being distributed, the one or more portions ofone or more of the display elements underneath the viewing window appearto one or more other users at one or more of the remote client deviceswith one or more different ones of the portions of one or more differentones of the display elements having different resolutions from theirnative resolutions at the other remote client device or nonremote clientdevice.
 72. The method of claim 69, wherein: the viewing window ismovable by the user at the other remote client device or nonremoteclient device with respect to the display elements to overlie one ormore other portions of one or more of the display elements; and thevideo feed captures the one or more other portions of one or more of thedisplay elements underneath the viewing window as it moves.
 73. Themethod of claim 72, wherein one or more of the display elements eachcomprise an application window.
 74. The method of claim 73, wherein oneor more of the application windows each comprise a web-browser window ora media-player window.
 75. The method of claim 69, wherein one or moreof the display elements comprise one or more portions of a virtualdesktop of the other remote client device or nonremote device.
 76. Themethod of claim 69, wherein one or more of the display elements eachcomprise an icon appearing on a virtual desktop of the other remoteclient device or nonremote device.